Sind mehrere Zufallszahlen nötig, ist eine Schleife mit wiederholten Aufrufen von nextXXX() nicht nötig; stattdessen gibt es in Random zwei Sorten von Methoden, die ein Bündel von Zufallszahlen liefern. Als erstes:
§ void nextBytes(byte[] bytes)
Füllt das Feld bytes mit Zufallsbytes auf.
Neu ab Java 8 sind Methoden, die einen Stream von Zufallszahlen liefern:
§ IntStream ints(…)
§ LongStream longs(…)
§ DoubleStream doubles(…)
Beispiel: Liefere 10 zufällige Zahlen, die vermutlich Primzahlen sind:
LongStream stream = new Random().longs()
.filter( v -> BigInteger.valueOf( v ).isProbablePrime(5) );
stream.limit( 10 ).forEach( System.out::println );
Die Methoden ints(…), longs(…) und doubles(…) gibt es in drei Spielarten.
Parametrisierung |
Erklärung |
IntSteam ints() |
Liefert unendlichen Strom von Zufallszahlen im kompletten Wertebereich der Primitiven |
LongStream longs() |
|
DoubleStream doubles() |
|
ints(long streamSize) |
Liefert einen Strom mit streamSize Zufallszahlen |
longs(long streamSize) |
|
double(long streamSize) |
|
ints(int randomNumberOrigin, int randomNumberBound) longs(long randomNumberOrigin, long randomNumberBound) doubles(double randomNumberOrigin, double randomNumberBound) |
Liefert einen unendlichen Strom vom Zufallszahlen mit Werten im Bereich randomNumberOrigin (inklusiv) bis randomNumberBound (exklusiv) |
ints(int randomNumberOrigin, int randomNumberBound) |
|
longs(long randomNumberOrigin, long randomNumberBound) |
|
doubles(double randomNumberOrigin, double randomNumberBound) |
|
ints(long streamSize, int randomNumberOrigin, int randomNumberBound) |
Liefert einen Strom mit streamSize Zufallszahlen an der Zahl mit Werten im Bereich randomNumberOrigin (inklusiv) bis randomNumberBound (exklusiv) |
longs(long streamSize, long randomNumberOrigin, long randomNumberBound) |
|
doubles(long streamSize, double randomNumberOrigin, double randomNumberBound) |
Stream-Methoden der Random-Klasse
Beispiel: Gib 5 Fließkomma-Zufallszahlen im Bereich von 10 bis 20 aus.
new Random().doubles(5, 10, 20).forEach( System.out::println );