logo

Generazione di numeri casuali in Java

Numeri casuali sono ampiamente utilizzati nella programmazione per simulazioni di sicurezza di gioco, ecc. Esistono diversi modi per generare numeri casuali utilizzando metodi e classi integrati in Java. Gli approcci più comunemente utilizzati sono elencati di seguito:

  • classe java.util.Random
  • Metodo Math.random() (restituisce valori doppi)
  • Classe ThreadLocalRandom (introdotta in Java 7)

Esploriamo ciascuno di questi approcci uno per uno in dettaglio

1. Utilizzando java.util.Random

Con l'aiuto di questa classe possiamo generare numeri casuali di diverso tipo (int double long boolean ecc.).



Metodi chiave:

  • successivoInt(): Questo metodo genera un numero intero casuale (intervallo completo compresi i negativi)
  • nextInt(int legato): Questo metodo genera un numero intero casuale compreso tra 0 (incluso) e limite (esclusivo)
  • nextDouble(): Questo metodo genera un doppio casuale tra 0.0 (incluso) e 1.0 (esclusivo)
  • nextBooleano(): Vero o falso casuale

Esempio :

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

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

Generazione di numeri in un intervallo specifico

La formula per generare un numero casuale con un intervallo specifico è elencata di seguito:

Rand casuale = new Random();

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

Nota: min e max sono il nostro limite di numero inferiore e superiore.

Esempio:

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

Produzione
Generated numbers are within 50 to 100 55 51 51 


2. Utilizzo di Math.random()

IL Lezione di matematica contiene vari metodi per eseguire varie operazioni numeriche come il calcolo dei logaritmi di esponenziazione ecc. Uno di questi metodi è casuale() questo metodo restituisce un valore doppio con segno positivo maggiore o uguale a 0,0 e inferiore a 1,0. I valori restituiti vengono scelti in modo pseudocasuale. Questo metodo può generare solo numeri casuali di tipo Doubles.

Esempio:

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

Produzione
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Generazione di numeri in un intervallo specifico

Ecco la formula per generare un numero casuale con un intervallo specifico dove min e max sono il nostro limite di numero inferiore e superiore:

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

Esempio:

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

Produzione
Generated numbers are within 50 to 100 82 68 77 


3. Utilizzo di ThreadLocalRandom

Questo è il metodo consigliato negli ambienti multi-thread in quanto riduce i conflitti.

Metodi chiave:

  • corrente().nextInt(): Intero casuale (intervallo completo)
  • corrente().nextInt(min max + 1): Intero casuale nell'intervallo (ho aggiunto questo esempio limitato)
  • current().nextDouble(): Doppio casuale (da 0,0 a 1,0)
  • corrente().nextBoolean(): Vero o falso casuale

Esempio:

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

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