Random Numbers

Случайные числа (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.