Kategorie: Java

Java: Zufallszahlen in einem bestimmten Bereich erstellen

Variante 1: Math.random()

int x = Min + (int)(Math.random() * ((Max - Min) + 1))

Die Zahl x ist eine Zufallszahl im Bereich [Min, Max].

Im Detail

Die Java Math Funktion Math.random() gibt einen double Werte im Bereich [0, 1) zurück, wobei die 1 nicht mit eingeschlossen ist. Man sollte den Zufallswert also zunächst mit ‚Max-Min‘ multiplizieren, um den Bereich abzudecken.

Math.random() * ( Max - Min )

Dies liefert einen Wert im Bereich [0, Max – Min), wobei der Endwert ‚Max – Min‘ nicht enthalten ist. Nun sollte der Bereich noch in den gewünschten Bereich verschoben werden, indem man ‚Min‘ dazu addiert.

Min + (Math.random() * (Max - Min))

Die Zufallszahl enthält allerdings immer noch nicht den Wert ‚Max‘, d.h. man muss 1 zum Wert ‚Max – Min‘ hinzuaddieren. Abschließend müssen noch alle Nachkommastellen durch ein Casten zu (int) entfernt werden.

Min + (int)(Math.random() * ((Max - Min) + 1))

Variante 2: Random()

Random ran = new Random();
int x = Min + ran.nextInt(Max - Min + 1);

Die Zahl x ist eine Zufallszahl im Bereich [Min, Max].