Функция rand.Int31n

Функция rand.Int31n генерирует псевдослучайное целое число типа int32 в диапазоне от 0 (включительно) до n (исключительно). В качестве единственного параметра она принимает число n типа int32, задающее верхнюю границу диапазона. Если передать n <= 0, функция вызовет панику. Для корректной работы необходимо инициализировать генератор случайных чисел с помощью rand.Seed.

Синтаксис

gorand.Int31n(n int32) int32

Пример

Давайте сгенерируем случайное число от 0 до 9:

gopackage main

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

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

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

go"7"

Пример

Сгенерируем несколько случайных чисел для диапазона от 0 до 100:

gopackage main

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

func main() {
  rand.Seed(time.Now().UnixNano())
  for i := 0; i < 5; i++ {
    res := rand.Int31n(101)
    fmt.Println(res)
  }
}

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

go"42"
"87"
"13"
"56"
"91"

Пример

Попробуем передать отрицательное значение, чтобы увидеть панику:

gopackage main

import (
  "fmt"
  "math/rand"
)

func main() {
  defer func() {
    if r := recover(); r != nil {
      fmt.Println("Panic:", r)
    }
  }()
  res := rand.Int31n(-5)
  fmt.Println(res)
}

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

go"Panic: invalid argument to Int31n"

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

  • функцию rand.Int31,
    которая генерирует случайное число в полном диапазоне int32
  • функцию rand.Int63n,
    которая генерирует случайное число в диапазоне [0, n) для типа int64
  • функцию rand.Intn,
    которая генерирует случайное число в диапазоне [0, n) для типа int
  • функцию rand.Seed,
    которая инициализирует генератор случайных чисел