Функция rand.Seed
Функция rand.Seed устанавливает начальное значение для генератора псевдослучайных чисел. Она принимает один параметр — seed типа int64. Начальное значение определяет последовательность случайных чисел, которую будет возвращать генератор. При одинаковом начальном значении последовательность случайных чисел всегда будет одинаковой.
Обычно функцию rand.Seed вызывают один раз в начале программы, передавая в качестве начального значения текущее время, чтобы каждый запуск программы генерировал уникальную последовательность случайных чисел.
Синтаксис
rand.Seed(seed)
Пример использования с текущим временем
Давайте инициализируем генератор случайных чисел с использованием текущего времени в наносекундах:
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
res := rand.Intn(100)
fmt.Println(res)
}
Результат выполнения кода будет разным при каждом запуске:
42
Пример с фиксированным начальным значением
Давайте установим фиксированное начальное значение '12345':
package main
import (
"fmt"
"math/rand"
)
func main() {
rand.Seed(12345)
res := rand.Intn(100)
fmt.Println(res)
}
Результат выполнения кода будет всегда одинаковым:
36
Пример с несколькими случайными числами
Давайте сгенерируем последовательность из трех случайных чисел с фиксированным начальным значением:
package main
import (
"fmt"
"math/rand"
)
func main() {
rand.Seed(42)
res1 := rand.Intn(10)
res2 := rand.Intn(10)
res3 := rand.Intn(10)
fmt.Println(res1, res2, res3)
}
Результат выполнения кода всегда будет одинаковым:
"1 5 6"
Смотрите также
-
функцию
rand.Intn,
которая генерирует случайное целое число в диапазоне от 0 до n-1 -
функцию
rand.Float64,
которая генерирует случайное число с плавающей точкой от 0.0 до 1.0 -
функцию
rand.Perm,
которая возвращает перестановку чисел от 0 до n-1 -
функцию
rand.Shuffle,
которая перемешивает элементы в слайсе