Функция rand.Seed

Функция rand.Seed устанавливает начальное значение для генератора псевдослучайных чисел. Она принимает один параметр — seed типа int64. Начальное значение определяет последовательность случайных чисел, которую будет возвращать генератор. При одинаковом начальном значении последовательность случайных чисел всегда будет одинаковой.

Обычно функцию rand.Seed вызывают один раз в начале программы, передавая в качестве начального значения текущее время, чтобы каждый запуск программы генерировал уникальную последовательность случайных чисел.

Синтаксис

gorand.Seed(seed)

Пример использования с текущим временем

Давайте инициализируем генератор случайных чисел с использованием текущего времени в наносекундах:

gopackage main

import (
  "fmt"
  "math/rand"
  "time"
)

func main() {
  rand.Seed(time.Now().UnixNano())
  res := rand.Intn(100)
  fmt.Println(res)
}

Результат выполнения кода будет разным при каждом запуске:

go42

Пример с фиксированным начальным значением

Давайте установим фиксированное начальное значение '12345':

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  rand.Seed(12345)
  res := rand.Intn(100)
  fmt.Println(res)
}

Результат выполнения кода будет всегда одинаковым:

go36

Пример с несколькими случайными числами

Давайте сгенерируем последовательность из трех случайных чисел с фиксированным начальным значением:

gopackage 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)
}

Результат выполнения кода всегда будет одинаковым:

go"1 5 6"

Смотрите также

  • функцию rand.Intn,
    которая генерирует случайное целое число в диапазоне от 0 до n-1
  • функцию rand.Float64,
    которая генерирует случайное число с плавающей точкой от 0.0 до 1.0
  • функцию rand.Perm,
    которая возвращает перестановку чисел от 0 до n-1
  • функцию rand.Shuffle,
    которая перемешивает элементы в слайсе