logo

Nejaušo skaitļu ģenerēšana Java

Nejauši skaitļi tiek plaši izmantotas spēļu drošības simulāciju programmēšanai utt. Ir vairāki veidi, kā ģenerēt nejaušus skaitļus, izmantojot Java iebūvētās metodes un klases. Visbiežāk izmantotās pieejas ir uzskaitītas zemāk:

  • java.util. Izlases klase
  • Metode Math.random() (atgriež dubultās vērtības)
  • ThreadLocalRandom klase (ieviesta Java 7)

Sīkāk izpētīsim katru no šīm pieejām pa vienam

1. Izmantojot java.util.Random

Ar šīs klases palīdzību mēs varam ģenerēt dažādu veidu nejaušus skaitļus (int double long boolean utt.).



Galvenās metodes:

java šķirošanas virknes
  • nextInt(): Šī metode ģenerē nejaušu veselu skaitli (pilns diapazons, ieskaitot negatīvos)
  • nextInt(int bound): Šī metode ģenerē nejaušu veselu skaitli no 0 (ieskaitot) līdz piesaistītam (izņemot)
  • nextDouble(): Šī metode ģenerē nejaušu dubultu no 0,0 (ieskaitot) līdz 1,0 (neskaitot)
  • nextBoolean(): Nejauši patiesi vai nepatiesi

Piemērs :

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);  } } 

Izvade
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275 

Skaitļu ģenerēšana noteiktā diapazonā

jtextfield

Tālāk ir norādīta formula nejauša skaitļa ģenerēšanai ar noteiktu diapazonu:

Random Random = new Random();

int nejaušsSkaits = rand.nextInt(maks. - min + 1) + min;

Piezīme: min un max ir mūsu zemākā un augstākā skaitļa robeža.

Piemērs:

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);  } } 

Izvade
Generated numbers are within 50 to 100 55 51 51 


2. Math.random()

The Matemātikas stunda satur dažādas metodes dažādu ciparu operāciju veikšanai, piemēram, eksponenciālo logaritmu aprēķināšanai utt. Viena no šīm metodēm ir nejauši () šī metode atgriež dubultu vērtību ar pozitīvu zīmi, kas ir lielāka vai vienāda ar 0,0 un mazāka par 1,0. Atgrieztās vērtības tiek izvēlētas pseido nejauši. Šī metode var ģenerēt tikai nejaušus skaitļus, kuru tips ir Doubles.

Piemērs:

java operators
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());  } } 

Izvade
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Skaitļu ģenerēšana noteiktā diapazonā

Šeit ir formula nejauša skaitļa ģenerēšanai ar noteiktu diapazonu, kur min un max ir mūsu zemākā un augstākā skaitļa robeža:

pamēģini noķert java

int nejaušsSkaits = min + (int)(Math.random() * ((max - min) + 1));

Piemērs:

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)));   } } 

Izvade
Generated numbers are within 50 to 100 82 68 77 


3. Izmantojot ThreadLocalRandom

Šis ir ieteicamais veids daudzpavedienu vidēs, jo tas samazina strīdus.

Galvenās metodes:

  • pašreizējais().nextInt(): Nejaušs vesels skaitlis (pilns diapazons)
  • pašreizējais().nextInt(min max + 1): Nejaušs vesels skaitlis diapazonā (es pievienoju šo ierobežoto piemēru)
  • pašreizējais().nextDouble(): Nejauši dubultā (0,0–1,0)
  • pašreizējais().nextBoolean(): Nejauši patiesi vai nepatiesi

Piemērs:

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);  } } 

Izvade
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false