Случайные числа (Random Numbers)|Random Numbers
#
// Пакет Go `math/rand` обеспечивает генерацию
// [псевдослучайных чисел](http://en.wikipedia.org/wiki/Pseudorandom_number_generator).
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
// Например, `rand.Intn` вернет случайное `целое число` в
// диапазоне `0 <= n < 100`.
fmt.Print(rand.Intn(100), ",")
fmt.Print(rand.Intn(100))
fmt.Println()
// `rand.Float64` вернет `число с плавающей точкой` в присвоит
// его в `f`, где `f` будет в промежутке `0.0 <= f < 1.0`.
fmt.Println(rand.Float64())
// Этот способ может быть использован для генерации других
// случайных чисел с плавающей точкой в разных диапазонах,
// например для диапазона `5.0 <= f' < 10.0`.
fmt.Print((rand.Float64()*5)+5, ",")
fmt.Print((rand.Float64() * 5) + 5)
fmt.Println()
// Генератор чисел по умолчанию является детерминированным,
// поэтому по умолчанию он будет каждый раз генерировать
// одну и ту же последовательность чисел. Чтобы произвести
// различные последовательности, дайте ему `соль`(https://ru.wikipedia.org/wiki/Соль_(криптография)),
// которая изменяется. Обратите внимание, что это не
// безопасно использовать для генерации случайных чисел,
// которые вы намерены хранить в секрете, используйте
// `crypto/rand` для них.
s1 := rand.NewSource(time.Now().UnixNano())
r1 := rand.New(s1)
// Вызвать результат `rand.Rand` можно точно так же, как и
// функции в пакете `rand`.
fmt.Print(r1.Intn(100), ",")
fmt.Print(r1.Intn(100))
fmt.Println()
// Если вы используете одну и ту же соль для генерации
// чисел, то они будут совпадать.
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
# Обратитесь к документации по пакету [`math/rand`](http://golang.org/pkg/math/rand/)
# для ознакомления с другими случайными величинами,
# которые может предоставить Go.