Das Paket math/rand unterstützt dich beim Generieren von Pseudozufallszahlen.
So generierst du eine zufällige Ganzzahl zwischen 0 und 99:
n := rand.Intn(100) // n is a random int, 0 <= n < 100
Die Funktion rand.Float64 gibt eine zufällige Gleitkommazahl zwischen 0.0 und 1.0 zurück:
f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0
Es gibt auch Unterstützung dafür, ein Slice (oder andere Datenstrukturen) zu mischen:
x := []string{"a", "b", "c", "d", "e"}
// shuffling the slice put its elements into a random order
rand.Shuffle(len(x), func(i, j int) {
x[i], x[j] = x[j], x[i]
})
Die Zahlenfolgen, die das Paket math/rand generiert, sind nicht wirklich zufällig. Bei einem bestimmten „Seed“-Wert sind die Ergebnisse vollständig deterministisch.
In Go 1.20+ wird der Seed automatisch zufällig gewählt, sodass du bei jedem Programmlauf eine andere Folge von Zufallszahlen siehst.
In früheren Go-Versionen war der Seed standardmäßig 1. Um für verschiedene Programmläufe unterschiedliche Folgen zu erhalten, musstest du den Zufallszahlengenerator vor dem Abrufen von Zufallszahlen manuell mit einem Seed versehen, z. B. mit der aktuellen Uhrzeit.
rand.Seed(time.Now().UnixNano())
Elaine arbeitet an einem neuen Kinderspiel, in dem Tiere und Zauberstäbe vorkommen. Jetzt ist es Zeit, Funktionen für das Würfeln, das Erzeugen zufälliger Zauberstab-Energie und das Mischen eines Slice zu programmieren.
Implementiere eine Funktion RollADie.
Das ist der klassische zwanzigseitige Würfel mit den Zahlen 1 bis 20.
d := RollADie() // d will be assigned a random int, 1 <= d <= 20
Implementiere eine Funktion GenerateWandEnergy.
Die Zauberstab-Energie sollte eine zufällige Gleitkommazahl sein, die größer oder gleich 0.0 und kleiner als 12.0 ist.
f := GenerateWandEnergy() // f will be assigned a random float64, 0.0 <= f < 12.0
Das Spiel enthält acht verschiedene Tiere:
Schreibe eine Funktion ShuffleAnimals, die ein Slice mit den acht Tieren in zufälliger Reihenfolge zurückgibt.
Melde dich bei Exercism an, um Go mit 34 Konzepte165 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.