Strom von Zufallszahlen generieren

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

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert