Angenommen, man möchte mit Java eine Zufallszahl innerhalb 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 Grenzwerte für Maximum und Minimum beinhalten:
int min = 5;
int max = 15;
Zufallszahl mit Math.random()
Die Methode Math.random() bietet eine Möglichkeit, um Zufallszahlen zu erstellen.
Die Methode java.lang.Math.random() gibt eine Pseudozufallszahl vom Typ double zurück, die größer oder gleich 0.0 und kleiner als 1.0 ist.
https://www.javatpoint.com/java-math-random-method
Die Methode kann wie folgt verwendet werden (allerdings bedarf es etwas Umrechnung, um auf eine Zahl zwischen min und max zu kommen):
int x = (int)(Math.random() * ((max - min) + 1)) + min
x
ist nun 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
Zufallszahl mit Random()
Die Klasse Random kann ebenfalls für Zufallszahlen verwendet werden. Sie stellt eine Methode nextInt()
bereit:
Gibt einen Pseudozufalls-, gleichmäßig verteilten ganzzahligen Wert zurück, der zwischen 0 (inklusiv) und dem angegebenen Wert (exklusiv) liegt und aus der Sequenz dieses Zufallszahlengenerators stammt. Der allgemeine Vertrag von nextInt besagt, dass ein ganzzahliger Wert im angegebenen Bereich pseudozufällig generiert und zurückgegeben wird. Alle möglichen begrenzten ganzzahligen Werte werden mit (ungefähr) gleicher Wahrscheinlichkeit erzeugt.
https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#nextInt–
So kann die Klasse bzw. die Method verwendet werden:
import java.util.Random;
Random ran = new Random();
int x = ran.nextInt(max - min + 1) + min;
Die Zahl x
ist hier 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 Typ des Rückgabewertes ist dann entsprechend ein double
, float
oder eben integer
.
Foto von Robert Stump auf Unsplash
Leave a Reply