Heim  >  Artikel  >  Backend-Entwicklung  >  Warum generiert mein Go-Code immer wieder dieselbe Zufallszahl?

Warum generiert mein Go-Code immer wieder dieselbe Zufallszahl?

Linda Hamilton
Linda HamiltonOriginal
2024-10-26 12:43:29672Durchsuche

Why Does My Go Code Keep Generating the Same Random Number?

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!

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