logo

Generiranje nasumičnih brojeva u Javi

Slučajni brojevi naširoko se koriste u programiranju za simulacije sigurnosti igara itd. Postoji više načina za generiranje slučajnih brojeva pomoću ugrađenih metoda i klasa u Javi. Najčešće korišteni pristupi navedeni su u nastavku:

  • java.util.Slučajna klasa
  • Metoda Math.random() (vraća dvostruke vrijednosti)
  • ThreadLocalRandom klasa (uvedena u Javi 7)

Istražimo detaljno svaki od ovih pristupa jedan po jedan

1. Korištenje java.util.Random

Uz pomoć ove klase možemo generirati slučajne brojeve različitih tipova (int double long boolean itd.).



Ključne metode:

sortiraj popis polja java
  • nextInt(): Ova metoda generira nasumični cijeli broj (cijeli raspon uključujući negative)
  • nextInt(int vezano): Ova metoda generira nasumični cijeli broj između 0 (uključivo) i vezano (isključivo)
  • nextDouble(): Ova metoda generira nasumično dvostruko između 0,0 (uključivo) i 1,0 (isključivo)
  • nextBoolean(): Slučajno točno ili netočno

Primjer :

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

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

Generiranje brojeva u određenom rasponu

struct array c programiranje

Formula za generiranje slučajnog broja s određenim rasponom navedena je u nastavku:

Random rand = new Random();

int randomNum = rand.nextInt(max - min + 1) + min;

Bilješka: min i max su naša donja i gornja granica broja.

Primjer:

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

Izlaz
Generated numbers are within 50 to 100 55 51 51 


2. Korištenje Math.random()

The Sat matematike sadrži različite metode za izvođenje raznih numeričkih operacija kao što je izračunavanje logaritama potenciranja itd. Jedna od tih metoda je nasumično() ova metoda vraća dvostruku vrijednost s pozitivnim predznakom većim ili jednakim 0,0 i manjim od 1,0. Vraćene vrijednosti biraju se pseudoslučajno. Ova metoda može generirati samo slučajne brojeve tipa Doubles.

Primjer:

pretvori str u int
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());  } } 

Izlaz
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Generiranje brojeva u određenom rasponu

Ovdje je formula za generiranje slučajnog broja s određenim rasponom gdje su min i max naša donja i gornja granica broja:

abeceda numerirana

int randomNum = min + (int)(Math.random() * ((max - min) + 1));

Primjer:

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

Izlaz
Generated numbers are within 50 to 100 82 68 77 


3. Korištenje ThreadLocalRandom

Ovo je preporučeni način u okruženjima s više niti jer smanjuje sukobe.

Ključne metode:

  • trenutni().nextInt(): Slučajni cijeli broj (puni raspon)
  • current().nextInt(min max + 1): Slučajni cijeli broj u rasponu (dodao sam ovaj ograničeni primjer)
  • trenutni().nextDouble(): Nasumično dvostruko (0,0 do 1,0)
  • current().nextBoolean(): Slučajno točno ili netočno

Primjer:

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

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