Gehen rand.Intn gleiche Zahl/Wert
Kann jemand mir bitte sagen, warum die Gehen z.B. hier:
https://tour.golang.org/basics/1
gibt immer den gleichen Wert für den rand.Intn(10)?
- Der Hinweis auf die Seite, sagt, warum es ist so: "Hinweis: die Umgebung, in der die Programme ausgeführt werden, ist deterministisch, so dass jedes mal, wenn Sie das Beispiel ausführen Programm rand.Intn wird wieder die gleiche Anzahl."
- Ich sah, dass, aber ich dachte, seeding, würde es beheben. icza (siehe akzeptierte Antwort) wies mich in die richtigen Richtungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
2 Gründen:
Müssen Sie initalize der globalen
Quellcode
verwendetrand.Intn()
und andere Funktionen desrand
Paket mitrand.Seed()
. Zum Beispiel:Finden Sie mögliche Duplikate von Schwierigkeit Gehen mit Rand Paket.
Zitat aus Paket doc
rand
:Den Tour führt Beispiele auf der Gehen Spielplatz, welche caches Ihr Ausgang.
Sehen Sie details an Warum tut count++ (statt count = count + 1) die Art und Weise ändern, die Karte ist wieder in Golang.
Für die Funktionen in der rand-Paket zu arbeiten, musst du eine "Seed" - Wert ein. Dies ist eine gute random-Wert als vom Anwender entschieden, weil - wie pro https://golang.org/pkg/math/rand/#Rand.Seed dies ist der Wert, golang verwendet, um das system zu einem deterministischen Zustand erste, der generiert dann eine Zahl basierend auf diesem Wert.
Für den sample-code zu arbeiten, können Sie versuchen,
Zeit.Jetzt().UnixNano geben können, eine willkürliche(wie) Zahl als der Wert in 'ein tausend Millionstel einer Sekunde'