Функция rand.Int

Функция rand.Int генерирует псевдослучайное целое число. Она возвращает значение типа int в диапазоне от 0 до math.MaxInt. Поскольку возвращаемое значение неотрицательное, оно никогда не бывает отрицательным. Для работы функции не требуется передавать параметры.

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

Синтаксис

gorand.Int()

Пример

Создадим простую программу, которая генерирует одно случайное число с использованием глобального генератора:

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  res := rand.Int()
  fmt.Println(res)
}

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

go"3209594855876986425"

Пример

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

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  rand.Seed(42)

  for i := 0; i < 5; i++ {
    fmt.Println(rand.Int())
  }
}

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

go"2834203016684390165"
"854142285315017637"
"8031739094787353914"
"5878368017021321851"
"5025193249686282915"

Пример

Продемонстрируем, что rand.Int всегда возвращает неотрицательное число. Для этого проверим старший бит результата:

gopackage main

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

func main() {
  rand.Seed(1)
  res := rand.Int()

  if res >= 0 {
    fmt.Println("Число неотрицательное:", res)
  }
  if res <= math.MaxInt {
    fmt.Println("Число не превышает MaxInt:", res)
  }
}

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

go"Число неотрицательное: 3814084103229030605"
"Число не превышает MaxInt: 3814084103229030605"

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

  • функцию rand.Intn,
    которая генерирует случайное число в диапазоне от 0 до n-1
  • функцию rand.Int63,
    которая возвращает неотрицательное 63-битное случайное число
  • функцию rand.Float64,
    которая возвращает случайное число с плавающей точкой в диапазоне [0.0, 1.0)
  • функцию rand.Seed,
    которая инициализирует генератор случайных чисел