logo

Atsitiktinių skaičių generavimas Java

Atsitiktiniai skaičiai yra plačiai naudojami programuojant žaidimų saugumo simuliacijas ir tt Yra keletas būdų, kaip generuoti atsitiktinius skaičius naudojant integruotus Java metodus ir klases. Toliau pateikiami dažniausiai naudojami metodai:

  • java.util.Atsitiktinė klasė
  • Math.random() metodas (pateikia dvigubas reikšmes)
  • ThreadLocalRandom klasė (įvesta Java 7)

Išsamiai išnagrinėkime kiekvieną iš šių metodų po vieną

1. Naudojant java.util.Random

Šios klasės pagalba galime generuoti įvairių tipų atsitiktinius skaičius (int double long boolean ir kt.).



Pagrindiniai metodai:

  • nextInt(): Šis metodas generuoja atsitiktinį sveikąjį skaičių (visą diapazoną, įskaitant neigiamus)
  • nextInt(įtraukta): Šis metodas generuoja atsitiktinį sveikąjį skaičių nuo 0 (imtinai) iki apriboto (išskyrus)
  • nextDouble(): Šis metodas sugeneruoja atsitiktinį dvigubą skaičių nuo 0,0 (imtinai) iki 1,0 (išskyrus)
  • nextBoolean(): Atsitiktinai tiesa ar klaidinga

Pavyzdys :

Java
// Generating random number using java.util.Random; import java.util.Random; public class Geeks{    public static void main(String[] args) {    // Creating the instance of Random class  Random r= new Random();  // Generate random integers in range 0 to 999  int r1 = r.nextInt(1000);  int r2 = r.nextInt(1000);  // Printing random integers  System.out.println('Random Integers: ' + r1);  System.out.println('Random Integers: ' + r2);  // Generate random doubles  double rd1 = r.nextDouble();  double rd2 = r.nextDouble();  // Printing random doubles  System.out.println('Random Doubles: ' + rd1);  System.out.println('Random Doubles: ' + rd2);  } } 

Išvestis
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275 

Skaičių generavimas tam tikrame diapazone

Formulė, skirta generuoti atsitiktinį skaičių su konkrečiu diapazonu, pateikiama toliau:

Atsitiktinis rand = naujas Atsitiktinis();

int atsitiktinisSkaičius = rand.nextInt(maks. - min + 1) + min;

Pastaba: min ir max yra mūsų apatinė ir aukštesnė skaičiaus riba.

Pavyzdys:

Java
// Generating random number in a specific range  import java.io.*; import java.util.*; class Geeks {    public static void main (String[] args) {  Random r = new Random();  int max=100min=50;  System.out.println('Generated numbers are within '+ min +' to '+ max);  System.out.println(r.nextInt(max - min + 1) + min);  System.out.println(r.nextInt(max - min + 1) + min);  System.out.println(r.nextInt(max - min + 1) + min);  } } 

Išvestis
Generated numbers are within 50 to 100 55 51 51 


2. Naudojant Math.random()

The Matematikos klasė yra įvairių metodų, skirtų įvairioms skaitinėms operacijoms atlikti, pavyzdžiui, eksponencijos logaritmų skaičiavimas ir kt. Vienas iš šių metodų yra atsitiktinis () šis metodas grąžina dvigubą reikšmę, kurios teigiamas ženklas yra didesnis arba lygus 0,0 ir mažesnis nei 1,0. Grąžinamos reikšmės parenkamos pseudo atsitiktinai. Šis metodas gali generuoti tik atsitiktinius dvigubų tipų skaičius.

Pavyzdys:

Java
// Java program to demonstrate working of  // Math.random() to generate random numbers import java.util.*;   public class Geeks {  public static void main(String args[])  {  // Generating random doubles  System.out.println('Random doubles: ' + Math.random());  System.out.println('Random doubles: ' + Math.random());  } } 

Išvestis
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Skaičių generavimas tam tikrame diapazone

Čia yra formulė, skirta generuoti atsitiktinį skaičių su konkrečiu diapazonu, kur min ir max yra mūsų apatinė ir aukštesnė skaičiaus riba:

Bourne-gain apvalkalas

int atsitiktinisSkaičius = min + (int)(Math.random() * ((maks. - min) + 1));

Pavyzdys:

Java
// Demonstrating how to generate random  // number within a specific range import java.io.*; import java.util.*; class Geeks {    public static void main (String[] args) {  int max=100min=50;  System.out.println('Generated numbers are within '+min+' to '+max);  System.out.println(min + (int)(Math.random() * ((max - min) + 1)));  System.out.println(min + (int)(Math.random() * ((max - min) + 1)));  System.out.println(min + (int)(Math.random() * ((max - min) + 1)));   } } 

Išvestis
Generated numbers are within 50 to 100 82 68 77 


3. ThreadLocalRandom naudojimas

Tai rekomenduojamas būdas kelių gijų aplinkoje, nes tai sumažina ginčus.

Pagrindiniai metodai:

  • current().nextInt(): Atsitiktinis sveikasis skaičius (visas diapazonas)
  • srovė().nextInt(min max + 1): Atsitiktinis sveikasis skaičius diapazone (pridėjau šį ribotą pavyzdį)
  • current().nextDouble(): Atsitiktinis dvigubas (0,0–1,0)
  • current().nextBoolean(): Atsitiktinai tiesa ar klaidinga

Pavyzdys:

Java
// Demonstrates how to generate random integers  // doubles and booleans using ThreadLocalRandom import java.util.concurrent.ThreadLocalRandom; public class Geeks {  public static void main(String[] args) {  // Generate random integers in range 0 to 999  // Random number between 0 and 999  int r1 = ThreadLocalRandom.current().nextInt(1000);    // Random number between 0 and 999  int r2 = ThreadLocalRandom.current().nextInt(1000);   // Print random integers  System.out.println('Random Integers: ' + r1);  System.out.println('Random Integers: ' + r2);  // Generate Random doubles between 0.0 (inclusive)   // and 1.0 (exclusive)  double rd1 = ThreadLocalRandom.current().nextDouble();  double rd2 = ThreadLocalRandom.current().nextDouble();  // Print random doubles  System.out.println('Random Doubles: ' + rd1);  System.out.println('Random Doubles: ' + rd2);  // Generate random booleans  boolean rb1 = ThreadLocalRandom.current().nextBoolean();  boolean rb2 = ThreadLocalRandom.current().nextBoolean();  // Print random Booleans  System.out.println('Random Booleans: ' + rb1);  System.out.println('Random Booleans: ' + rb2);  } } 

Išvestis
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false