Ich habe versucht, den Zufallszahlengenerator in Java einem Freund zu erklären, wenn er jedes Mal, wenn er das Programm ausführt, dieselben Zahlen erhält. Ich habe meine eigene einfachere Version der gleichen Sache erstellt, und ich bekomme auch die gleichen genauen Zahlen, die er jedes Mal erhielt, wenn ich das Programm ausführte.
Was mache ich falsch?
%Vor%Die letzten fünf Zahlen von 100 sind:
%Vor% Sie haben den Zufallsgenerator mit einem konstanten Wert 100
gesetzt. Es ist deterministisch, so dass bei jedem Lauf die gleichen Werte erzeugt werden.
Ich bin mir nicht sicher, warum Sie es mit 100
versehen haben, aber der Startwert hat nichts mit dem Wertebereich zu tun, der generiert wird (der auf andere Weise gesteuert wird, wie der Aufruf von nextInt
das hast du schon).
Um verschiedene Werte zu erhalten, verwenden Sie die Random
-Konstruktor ohne Argumente, der die Systemzeit verwendet, um den Zufallsgenerator zu erzeugen.
Zitat aus dem Javadoc für den parameterlosen Random
-Konstruktor:
Erzeugt einen neuen Zufallszahlengenerator. Dieser Konstruktor legt den Seed fest des Zufallszahlengenerators auf einen sehr wahrscheinlich unterscheidbaren Wert von irgendeinem anderen Aufruf dieses Konstruktors.
Zitieren des tatsächlichen Codes im parameterlosen Random
-Konstruktor:
Zufallszahlengeneratoren sind wirklich nur pseudozufällig. Das heißt, sie verwenden deterministische Mittel, um Sequenzen zu erzeugen, die bei bestimmten statistischen Kriterien zufällig erscheinen.
Mit dem Random(long seed)
constuctor können Sie einen Seed übergeben, der die Reihenfolge der Pseudozufallszahlen bestimmt.