Функция rand.Int31

Функция rand.Int31 из пакета math/rand генерирует псевдослучайное 31-битное целое число. Она возвращает значение типа int32 в диапазоне от 0 до 2147483647 (включительно), что соответствует максимальному значению 31-битного числа со знаком. Функция не принимает никаких параметров. Для получения случайного числа в меньшем диапазоне используйте функцию rand.Int31n.

Синтаксис

gorand.Int31()

Пример

Сгенерируем случайное 31-битное число и выведем его:

gopackage main

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

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

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

go"1234567890"

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

Пример

Сгенерируем несколько случайных чисел в цикле и выведем их:

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  for i := 0; i < 5; i++ {
    res := rand.Int31()
    fmt.Println(res)
  }
}

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

go"802064229"
"1640250771"
"1400291146"
"145344990"
"1572156793"

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

Пример

Используем rand.Int31 для генерации псевдослучайного числа и проверим его диапазон:

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  res := rand.Int31()
  fmt.Printf("Value: %d\n", res)
  fmt.Printf("Min possible: 0\n")
  fmt.Printf("Max possible: %d\n", int32(2147483647))
}

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

go"Value: 1843267854"
"Min possible: 0"
"Max possible: 2147483647"

Как видно из примера, возвращаемое значение всегда находится в пределах от 0 до максимального значения 31-битного целого числа. Это гарантируется реализацией функции и не требует дополнительной проверки.

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

  • функцию rand.Int31n,
    которая генерирует случайное число в диапазоне от 0 до n-1
  • функцию rand.Int,
    которая генерирует случайное 64-битное целое число
  • функцию rand.Int63,
    которая генерирует случайное 63-битное целое число
  • функцию rand.Float32,
    которая генерирует случайное число с плавающей точкой