A math/rand csomag támogatást nyújt pszeudovéletlen számok generálásához.
Így generálhatsz egy véletlen egész számot 0 és 99 között:
import "math/rand"
n := rand.Intn(100) // n is a random int, 0 <= n < 100
A rand.Float64 függvény egy véletlen lebegőpontos számot ad vissza 0.0 és 1.0 között:
f := rand.Float64() // f is a random float64, 0.0 <= f < 1.0
Egy szeletet (vagy más adatszerkezetet) is összekeverhetsz:
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]
})
A math/rand csomaggal generált számsorozatok nem igazán véletlenszerűek.
Egy adott „mag” érték esetén az eredmények teljesen determinisztikusak.
A Go 1.20-as verziójától kezdve a magot a program automatikusan, véletlenszerűen választja ki, így minden futtatáskor más véletlenszám-sorozatot látsz.
A Go korábbi verzióiban a mag alapértelmezés szerint 1 volt.
Ezért ha a program különböző futtatásaihoz különböző sorozatokat akartál kapni, kézzel kellett beállítanod a véletlenszám-generátor magját, például az aktuális idővel, mielőtt bármilyen véletlen számot kértél volna.
rand.Seed(time.Now().UnixNano())