Lösung des Problems der sich wiederholenden Zufallszahlengenerierung in Java mit Set Seed
Problembeschreibung:
Bei der Implementierung eines Zufallszahlengenerators können Entwickler auf eine Situation stoßen, in der der Aufruf der Zufallszahlenmethode trotz der Festlegung des Startwerts kontinuierlich die gleiche Ausgabe generiert.
Codebeispiel:
Betrachten Sie den folgenden Codeausschnitt:
class Numbers { public int random(int i) { Random randnum = new Random(); randnum.setSeed(123456789); return randnum.nextInt(i); } }
Beim mehrmaligen Aufruf von „numbers.random(10)“ wird dauerhaft eine identische Zahl, z. B. 5, anstelle unterschiedlicher Ausgaben zurückgegeben.
Lösung:
Um die Generierung eindeutiger Zufallszahlen mit einem vordefinierten Startwert sicherzustellen, muss die Random()-Instanz in der gesamten Klasse gemeinsam genutzt werden. Dies kann durch die folgende Codeänderung erreicht werden:
class Numbers { Random randnum; public Numbers() { randnum = new Random(); randnum.setSeed(123456789); } public int random(int i) { return randnum.nextInt(i); } }
Durch die Initialisierung der Randnum-Instanz im Klassenkonstruktor wird sie zu einer gemeinsam genutzten Ressource, auf die alle Methoden innerhalb der Klasse zugreifen können. Dadurch wird sichergestellt, dass der Startwert nur einmal gesetzt wird und nachfolgende Aufrufe der random()-Methode unterschiedliche Zufallszahlen generieren.
Das obige ist der detaillierte Inhalt vonWarum führt das Festlegen des Startwerts im Zufallszahlengenerator von Java zu wiederholten Ausgaben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!