|
Balíček |
|
package main
|
|
import "time"
import "fmt"
import "math/rand"
|
|
func main() {
|
|
|
Například, |
fmt.Print(rand.Intn(100), ",")
fmt.Print(rand.Intn(100))
fmt.Println()
|
|
|
fmt.Println(rand.Float64())
|
|
Tohle se dá použít pro generování náhodných floatů v
jiném rozsahu, například |
fmt.Print((rand.Float64()*5)+5, ",")
fmt.Print((rand.Float64() * 5) + 5)
fmt.Println()
|
|
Výchozí číselný generátor je deterministický,
takže ve výchozím stavu vyprodukuje pokaždé stejnou
sekvenci čísel. Pro tvorbu měnících se sekvencí,
poskytněte generátoru semínko které se mění.
Povšimněte se že není bezpečné tento generátor používat pro
náhodná čísla která by měla být tajná.
Pro ty použij |
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
|
|
Zavolej výslednou |
fmt.Print(r1.Intn(100), ",")
fmt.Print(r1.Intn(100))
fmt.Println()
|
|
Pokud inicializuješ zdroj se stejným číslem, produkuje stejnou sekvenci náhodných čísel. |
s2 := rand.NewSource(42)
r2 := rand.New(s2)
fmt.Print(r2.Intn(100), ",")
fmt.Print(r2.Intn(100))
fmt.Println()
s3 := rand.NewSource(42)
r3 := rand.New(s3)
fmt.Print(r3.Intn(100), ",")
fmt.Print(r3.Intn(100))
}
|
$ go run random-numbers.go
81,87
0.6645600532184904
7.123187485356329,8.434115364335547
0,28
5,87
5,87
|
|
|
Pro další náhodná množství která dokáže Go generovat
se podívej na dokumentaci balíčku |
Další příklad: Parsování čísel.