Angenommen, man möchte mit Java eine Zufallszahl innerhalbe eines bestimmten Zahlenbereiches definieren. In den folgenden Beispielen soll eine Zufallszahl zwischen 5 (inklusive) und 15 (inklusive) erstellt werden.
Hierfür definiere ich zunächst zwei Variablen, die in den nachfolgenden Code-Zeilen die Werte für Maximum und Minimum halten:
int min = 5; int max = 15;
Variante 1: Math.random()
int x = (int)(Math.random() * ((max - min) + 1)) + min
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.
(Math.random() * (max - min)) + 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.
(int)(Math.random() * ((max - min) + 1)) + min
Variante 2: Random()
Random ran = new Random(); int x = ran.nextInt(max - min + 1) + min;
Die Zahl x ist eine Zufallszahl im Bereich [min, max]. Neben nextInt()
gibt es noch andere Methoden wie nextDouble()
, nextFloat()
etc. die genau wie nextInt()
verwendet werden können, um Zufallszahlen zu generieren. Der type des Rückgabewertes ist dann entsprechend ein double
, float
oder eben int
eger.