воскресенье, 26 апреля 2020 г.

Генерация случайных чисел, символов и элементов срезов в Golang

Используйте функции rand.Seed и rand.Int63 в пакете math/rand для генерации неотрицательного псевдослучайного числа типа int64:

rand.Seed(time.Now().UnixNano())
n := rand.Int63() // например 4601851300195147788

Аналогично, rand.Float64 генерирует псевдослучайное число с плавающей точкой x, где 0 <= x < 1:

x := rand.Float64() // например 0.49893371771268225

Предупреждение: без первоначального вызова rand.Seed вы будете получать одинаковую последовательность чисел при каждом запуске программы.

Несколько случайных источников

Все функции в пакете math/rand используют один случайный источник.

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

generator := rand.New(rand.NewSource(time.Now().UnixNano()))
n := generator.Int63()
x := generator.Float64()

Целые числа и символы в заданном диапазоне

Число между a и b

Используйте rand.Intn(m), который возвращает псевдослучайное число n, где 0 <= n < m.

n := a + rand.Intn(b-a+1) // a ≤ n ≤ b

Символ между 'a' и 'z'

c := 'a' + rune(rand.Intn('z'-'a'+1)) // 'a' ≤ c ≤ 'z'

Случайный элемент из среза

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

chars := []rune("AB⌘")
c := chars[rand.Intn(len(chars))] // например '⌘'


Читайте также:


Комментариев нет:

Отправить комментарий