logo

Willekeurige getallen genereren in Java

Willekeurige cijfers worden veel gebruikt bij het programmeren voor simulaties, gamebeveiliging enz. Er zijn meerdere manieren om willekeurige getallen te genereren met behulp van ingebouwde methoden en klassen in Java. De meest gebruikte benaderingen worden hieronder opgesomd:

  • java.util.Random-klasse
  • Methode Math.random() (retourneert dubbele waarden)
  • ThreadLocalRandom-klasse (geïntroduceerd in Java 7)

Laten we elk van deze benaderingen één voor één in detail onderzoeken

1. Java.util.Random gebruiken

Met behulp van deze klasse kunnen we willekeurige getallen van verschillende typen genereren (int double long boolean etc.).



Belangrijkste methoden:

  • volgendeInt(): Deze methode genereert een willekeurig geheel getal (volledig bereik inclusief negatieven)
  • nextInt(int gebonden): Deze methode genereert een willekeurig geheel getal tussen 0 (inclusief) en gebonden (exclusief)
  • volgendeDubbel(): Deze methode genereert een willekeurige dubbel tussen 0,0 (inclusief) en 1,0 (exclusief)
  • volgendeBoolean(): Willekeurig waar of onwaar

Voorbeeld :

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

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

Getallen genereren in een specifiek bereik

Hieronder vindt u de formule om een ​​willekeurig getal met een specifiek bereik te genereren:

Willekeurige willekeurige = nieuwe willekeurige();

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

Opmerking: min en max zijn onze onder- en bovenlimiet van het aantal.

Voorbeeld:

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

Uitvoer
Generated numbers are within 50 to 100 55 51 51 


2. Math.random() gebruiken

De Wiskundeles bevat verschillende methoden voor het uitvoeren van verschillende numerieke bewerkingen, zoals het berekenen van machtsverheffende logaritmen enz. Een van deze methoden is willekeurig() deze methode retourneert een dubbele waarde met een positief teken groter dan of gelijk aan 0,0 en kleiner dan 1,0. De geretourneerde waarden worden pseudo-willekeurig gekozen. Deze methode kan alleen willekeurige getallen van het type Doubles genereren.

Voorbeeld:

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

Uitvoer
Random doubles: 0.38601320746656065 Random doubles: 0.9209882942481417 

Getallen genereren in een specifiek bereik

Hier is de formule om een ​​willekeurig getal te genereren met een specifiek bereik, waarbij min en max onze onder- en bovenlimiet van het aantal zijn:

CSS-teruglooptekst

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

Voorbeeld:

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

Uitvoer
Generated numbers are within 50 to 100 82 68 77 


3. ThreadLocalRandom gebruiken

Dit is de aanbevolen manier in omgevingen met meerdere threads, omdat hierdoor de conflicten worden verminderd.

Belangrijkste methoden:

  • huidige().nextInt(): Willekeurig geheel getal (volledig bereik)
  • current().nextInt(min max + 1): Willekeurig geheel getal binnen bereik (ik heb dit begrensde voorbeeld toegevoegd)
  • huidige().volgendeDouble(): Willekeurig dubbel (0,0 tot 1,0)
  • current().nextBoolean(): Willekeurig waar of onwaar

Voorbeeld:

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

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