Lösen der repetitiven Zufallszahlengenerierung in Go
In Go gibt die Funktion rand.Intn(n int) int eine pseudozufällige Ganzzahl zurück im Bereich [0, n). Es ist jedoch ein Problem aufgetreten, bei dem immer dieselbe Zahl ausgegeben wird.
Die Dokumentation legt nahe, dass rand.Intn die Standardquelle verwendet, die eine deterministische Folge von Werten generiert. Um das Verhalten anzupassen und Zufälligkeit sicherzustellen, müssen Sie die Zufallszahlengenerierung ordnungsgemäß starten.
Um den Zufallszahlengenerator zu starten, rufen Sie die Funktion rand.Seed(seed int64) auf. Diese Funktion initialisiert die Standardquelle mit einem Startwert. Eine gängige Praxis ist die Verwendung des aktuellen Unix-Zeitstempels:
<code class="go">rand.Seed(time.Now().UnixNano())</code>
Durch das Seeding des Generators stellen Sie sicher, dass jeder Lauf Ihres Programms unterschiedliche Zufallszahlen erzeugt.
Wenn rand.Seed() nicht aufgerufen wird, verhält sich der Generator so, als wäre er mit 1 gesät, was zur beobachteten Wiederholung führt.
Das obige ist der detaillierte Inhalt vonWarum generiert mein Go-Code immer wieder dieselbe Zufallszahl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!