Используйте функции 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))] // например '⌘'
Читайте также:
- Go Code Review Comments: Пакет Crypto Rand
- Пакеты в Golang: объявление, импорт, загрузка, документирование
- Основы Go: базовые типы
Комментариев нет:
Отправить комментарий