Tag: Integer

Java: Zufallszahlen in einem bestimmten Bereich erstellen

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 integer.