Obwohl der Startwert der Random-Klasse auf einen bestimmten Wert gesetzt ist, ist der Zufallszahlengenerator gibt immer die gleiche Nummer zurück. Lassen Sie uns untersuchen, was dieses Problem verursachen könnte.
Die Java-Random-Klasse wurde entwickelt, um Pseudozufallszahlen zu generieren. Standardmäßig verwendet es seine interne Uhr als Startwert, wodurch eine relativ vorhersehbare Zahlenfolge generiert wird. Um die Sequenz anzupassen, können Sie mit der Methode setSeed() explizit einen Startwert festlegen.
Der Startwert ist ein numerischer Wert, der zur Initialisierung des internen Zustands des Zufallszahlengenerators verwendet wird. Dieser Status bestimmt die Reihenfolge der generierten Zahlen.
Im bereitgestellten Code erstellen Sie eine neue Instanz von Random innerhalb der random()-Methode. Dies bedeutet, dass jedes Mal, wenn Sie random() aufrufen, ein neuer Startwert festgelegt wird, der den zuvor festgelegten Startwert effektiv überschreibt.
Um dieses Problem zu beheben, müssen Sie die Random-Instanz für die gesamte Klasse freigeben. Durch das Erstellen einer einzelnen Instanz und das einmalige Festlegen des Startwerts bei der Initialisierung der Klasse stellen Sie sicher, dass konsistent dieselbe Zahlenfolge generiert wird.
Der folgende aktualisierte Code behebt das Problem:
public class Numbers { private Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
In diesem aktualisierten Code:
Durch diese Änderungen erhalten Sie nun unterschiedliche Zufallszahlen, wenn Sie random() von verschiedenen Orten aus aufrufen Teile Ihres Programms unter Berücksichtigung des angegebenen Startwerts.
Das obige ist der detaillierte Inhalt vonWarum gibt das Setzen des Startwerts in der Zufallsklasse von Java dieselbe Zahl zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!