Heim > Java > javaLernprogramm > Hauptteil

Warum führt das Festlegen des Startwerts im Zufallszahlengenerator von Java zu wiederholten Ausgaben?

DDD
Freigeben: 2024-11-12 19:04:02
Original
395 Leute haben es durchsucht

Why Does Setting the Seed in Java's Random Number Generator Result in Repeated Outputs?

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);
    }
}
Nach dem Login kopieren

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);
    }
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage