Die Java Random-Klasse wird verwendet, um eine Reihe von Zufallszahlen zu generieren.
Java Random-Klasse
- Die
Random
-Klasse ist Teil des java.util-Pakets. - Eine Instanz der Java Random-Klasse wird verwendet, um Zufallszahlen zu generieren.
- Diese Klasse bietet mehrere Methoden zur Generierung von Zufallszahlen vom Typ Integer, Double, Long, Float usw.
- Der Zufallszahlengeneratoralgorithmus arbeitet mit dem Seed-Wert. Wenn kein Wert angegeben wird, wird der Seed-Wert aus der System-Nanozeit erstellt.
- Wenn zwei Random-Instanzen den gleichen Seed-Wert haben, generieren sie die gleiche Sequenz von Zufallszahlen.
- Die Java Random-Klasse ist threadsicher, es wird jedoch empfohlen, in einer mehrthreadigen Umgebung die Klasse
java.util.concurrent.ThreadLocalRandom
zu verwenden. - Random-Klasseninstanzen sind für sicherheitssensitive Anwendungen nicht geeignet. In solchen Fällen ist es besser,
java.security.SecureRandom
zu verwenden.
Java Random-Konstruktoren
Die Java Random-Klasse hat zwei Konstruktoren, die wie folgt lauten:
Random()
: erzeugt einen neuen ZufallsgeneratorRandom(long seed)
: erzeugt einen neuen Zufallsgenerator mit dem angegebenen Seed
Java Random-Klassenmethoden
Lassen Sie uns einige Methoden der Java-Random-Klasse betrachten.
nextBoolean()
: Diese Methode gibt den nächsten Pseudorandomwert zurück, der ein boolescher Wert aus der Sequenz des Zufallszahlengenerators ist.nextDouble()
: Diese Methode gibt den nächsten Pseudorandomwert zurück, der ein Double-Wert zwischen 0,0 und 1,0 ist.nextFloat()
: Diese Methode gibt den nächsten Pseudorandomwert zurück, der ein Float-Wert zwischen 0,0 und 1,0 ist.nextInt()
: Diese Methode gibt den nächsten int-Wert aus der Sequenz des Zufallszahlengenerators zurück.- nextInt(int n): Diese Methode gibt einen Pseudorandomwert zurück, der ein int-Wert zwischen 0 und dem angegebenen Wert aus der Sequenz des Zufallszahlengenerators ist.
Java Random-Beispiel
Lassen Sie uns das folgende Java-Random-Beispielprogramm betrachten.
package com.journaldev.examples;
import java.util.Random;
/**
* Java Random Number Example Program
*
*/
public class RandomNumberExample {
public static void main(String[] args) {
// Initialisieren des Zufallszahlengenerators
Random random = new Random();
// Generiert booleschen Wert
System.out.println(random.nextBoolean());
// Generiert Double-Wert
System.out.println(random.nextDouble());
// Generiert Float-Wert
System.out.println(random.nextFloat());
// Generiert int-Wert
System.out.println(random.nextInt());
// Generiert int-Wert within specific limit
System.out.println(random.nextInt(20));
}
}
Die Ausgabe des obigen Programms ist:
false
0.30986869120562854
0.6210066
-1348425743
18
Überprüfen Sie diesen Beitrag für weitere Informationen zur Java-Zufallszahlengenerierung.
Zufallszahlengenerierung mit Seed
Es gibt zwei Möglichkeiten, eine Zufallszahl mit einem Seed zu generieren.
Random random = new Random(long seed);
Random random1 = new Random();
random1.setSeed(seed);
Der Seed ist der Anfangswert des internen Zustands des Pseudozufallszahlengenerators, der von der Methode next(int) verwaltet wird.
package com.journaldev.examples;
import java.util.Random;
/**
* Java Random Number Using Seed Example Program
*
* @author pankaj
*
*/
public class RadomSeedExample {
public static void main(String[] args) {
//Verwendung des Konstruktors
Random random = new Random(100);
System.out.println("Using Constructor");
System.out.println(random.nextInt());
//Verwendung der Methode
Random random2 = new Random();
random2.setSeed(200);
System.out.println("Using Method");
System.out.println(random2.nextInt());
}
}
Die Ausgabe des obigen Programms ist:
Using Constructor
-1193959466
Using Method
-1133938638
Was passiert, wenn wir zwei verschiedenen Zufallszahlengeneratoren denselben Seed übergeben? Schauen wir uns das folgende Programm an und sehen wir, was passiert, wenn wir zwei verschiedenen Zufallszahlengeneratoren denselben Seed übergeben.
package com.journaldev.examples;
import java.util.Random;
/**
* Java Random Number Using Same Seed Example Program
*
*/
public class RandomNumberSameSeedExample {
public static void main(String[] args) {
//Initialisieren von zwei Zufallszahlengeneratoren mit demselben Seed
Random random1 = new Random(100);
Random random2 = new Random(100);
System.out.println(random1.nextInt());
System.out.println(random2.nextInt());
}
}
Die Ausgabe des obigen Programms ist:
-1193959466
-1193959466
Wir können sehen, dass dieselbe Zufallszahl generiert wird, wenn wir zwei verschiedenen Zufallszahlengeneratoren denselben Seed übergeben.
Java 8 Random-Klassenmethoden
Wie Sie auf dem obigen Bild sehen können, wurden in Java 8 viele neue Methoden zur Random-Klasse hinzugefügt. Diese Methoden können einen Strom von Zufallszahlen erzeugen. Unten finden Sie ein einfaches Programm zum Generieren eines Stroms von 5 ganzen Zahlen zwischen 1 und 100.
package com.journaldev.random;
import java.util.Random;
import java.util.stream.IntStream;
public class JavaRandomExample {
public static void main(String[] args) {
Random random = new Random();
// Strom von 5 Ganzzahlen zwischen 1 und 100 generieren
IntStream ints = random.ints(5, 1, 100);
ints.forEach(System.out::println);
}
}
Das ist alles für einen schnellen Überblick über die Java-Random-Klasse. Referenz: API-Dokumentation
Source:
https://www.digitalocean.com/community/tutorials/java-random