Wie generiere ich in Java zufällige Ganzzahlen innerhalb eines bestimmten Bereichs?
Wie generiere ich einen zufälligen int
-Wert in einem bestimmten Bereich?
Ich habe Folgendes versucht, aber das funktioniert nicht:
Versuch 1:
randomNum = minimum + (int)(Math.random() * maximum);
// Bug: `randomNum` can be bigger than `maximum`.
Versuch 2:
Random rn = new Random();
int n = maximum - minimum + 1;
int i = rn.nextInt() % n;
randomNum = minimum + i;
// Bug: `randomNum` can be smaller than `minimum`.
3359
3
In Java 1.7 oder höher ist die Standardmethode hierfür wie folgt:
Siehe die entsprechende JavaDoc. Dieser Ansatz hat den Vorteil, dass eine java.util.Random-Instanz nicht explizit initialisiert werden muss, was bei unsachgemäßer Verwendung eine Quelle von Verwirrung und Fehlern sein kann.
Umgekehrt gibt es jedoch keine Möglichkeit, den Seed explizit zu setzen, so dass es in Situationen, in denen dies nützlich ist, wie z. B. beim Testen oder Speichern von Spielzuständen oder Ähnlichem, schwierig sein kann, Ergebnisse zu reproduzieren. In solchen Situationen kann die unten gezeigte Technik aus der Zeit vor Java 1.7 verwendet werden.
Vor Java 1.7 war die Standardmethode wie folgt:
Siehe die entsprechende JavaDoc. In der Praxis ist die Klasse java.util.Random oft besser geeignet als java.lang.Math.random().
Insbesondere besteht keine Notwendigkeit, das Rad der Zufallszahlengenerierung neu zu erfinden, wenn es eine unkomplizierte API innerhalb der Standardbibliothek gibt, um diese Aufgabe zu erfüllen.
Verwendung: