logo

Generarea numerelor aleatorii în Java

Numere aleatorii sunt utilizate pe scară largă în programarea pentru simularea securității jocurilor etc. Există mai multe moduri de a genera numere aleatorii folosind metode și clase încorporate în Java. Cele mai frecvent utilizate abordări sunt enumerate mai jos:

  • java.util.Random class
  • Metoda Math.random() (returnează valori duble)
  • Clasa ThreadLocalRandom (introdusă în Java 7)

Să explorăm fiecare dintre aceste abordări una câte una în detaliu

1. Folosind java.util.Random

Cu ajutorul acestei clase putem genera numere aleatorii de diferite tipuri (int double long boolean etc.).



Metode cheie:

  • nextInt(): Această metodă generează un număr întreg aleatoriu (gamă completă, inclusiv negative)
  • nextInt(int bound): Această metodă generează un număr întreg aleatoriu între 0 (inclusiv) și legat (exclusiv)
  • următorulDublu(): Această metodă generează o dublă aleatorie între 0,0 (inclusiv) și 1,0 (exclusiv)
  • nextBoolean(): Adevărat sau fals aleatoriu

Exemplu :

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

Ieșire
Random Integers: 39 Random Integers: 190 Random Doubles: 0.4200728082969115 Random Doubles: 0.9327571841228275 

Generarea de numere într-un interval specific

Formula pentru generarea unui număr aleatoriu cu un anumit interval este listată mai jos:

Random aleatoriu = new Random();

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

Nota: min și max sunt limita noastră inferioară și superioară a numărului.

Exemplu:

sortare de inserare în java
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);  } } 

Ieșire
Generated numbers are within 50 to 100 55 51 51 


2. Folosind Math.random()

The Clasa de matematica conține diverse metode pentru efectuarea diferitelor operații numerice, cum ar fi calcularea logaritmilor de exponențiere etc. Una dintre aceste metode este aleatoriu() această metodă returnează o valoare dublă cu un semn pozitiv mai mare sau egal cu 0,0 și mai mic de 1,0. Valorile returnate sunt alese pseudoaleatoriu. Această metodă poate genera numai numere aleatorii de tip Doubles.

Exemplu:

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

Ieșire
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Generarea de numere într-un interval specific

Iată formula pentru a genera un număr aleatoriu cu un interval specific, unde min și max sunt limita noastră inferioară și superioară a numărului:

java lambda

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

Exemplu:

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

Ieșire
Generated numbers are within 50 to 100 82 68 77 


3. Utilizarea ThreadLocalRandom

Aceasta este modalitatea recomandată în mediile cu mai multe fire, deoarece reduce disputa.

Metode cheie:

  • curent().nextInt(): Număr întreg aleatoriu (gamă completă)
  • curent().nextInt(min max + 1): Număr întreg aleatoriu în interval (am adăugat acest exemplu mărginit)
  • curent().nextDouble(): Dublu aleatoriu (de la 0,0 la 1,0)
  • curent().nextBoolean(): Adevărat sau fals aleatoriu

Exemplu:

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

Ieșire
Random Integers: 812 Random Integers: 461 Random Doubles: 0.7420865203902993 Random Doubles: 0.9580683365617423 Random Booleans: false Random Booleans: false