Fehlerbehebung bei der Generierung desselben Werts durch rand.Intn
Das im Link bereitgestellte Go-Beispiel gibt tatsächlich denselben Wert für rand.Intn(10) zurück. sofern nicht geändert, um den Zufallszahlengenerator zu initialisieren. Hier ist eine Erklärung:
-
Uninitialisierte Zufallszahlenquelle:
- rand.Intn und andere Funktionen im Rand-Paket verwenden die globale Quelle um Zufallszahlen zu generieren.
- Standardmäßig ist diese Quelle nicht initialisiert, was zu einem deterministischen Ergebnis führt Sequenz.
- Um die Quelle zu initialisieren, verwenden Sie rand.Seed(time.Now().UnixNano()).
-
Go Playground Caching :
- Der Go Playground, auf dem das Beispiel ausgeführt wird, speichert häufig Ergebnisse zwischen, um sie zu verbessern Leistung.
- Dieses Caching kann sich auf die Ausgabe der Zufallszahlengenerierung auswirken und sie deterministisch erscheinen lassen.
Um diese Probleme zu lösen und Zufallszahlen konsistent zu erhalten, sollten Sie Folgendes in Betracht ziehen die folgenden Schritte:
- Initialisieren Sie den Zufallszahlengenerator mit rand.Seed(time.Now().UnixNano()).
- Wenn Sie das Beispiel auf dem Go Playground ausführen, löschen Sie die Ausgabe vor der Ausführung, um Caching zu vermeiden.
Folgendes Mit diesen Schritten können Sie mit rand.Intn effektiv Zufallszahlen generieren und vermeiden, wiederholt denselben Wert zu erhalten.
Das obige ist der detaillierte Inhalt vonWarum generiert „rand.Intn' von Go manchmal denselben Wert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme: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