Функция rand.NewSource
Функция rand.NewSource создает новый источник
псевдослучайных чисел. В качестве единственного параметра
она принимает целочисленное значение seed
(начальное число), которое определяет начальное состояние
генератора. При одинаковом значении seed
генератор будет выдавать одинаковую последовательность чисел,
что полезно для воспроизводимости результатов. Функция
возвращает значение типа rand.Source, которое можно
использовать для создания генератора с помощью
rand.New.
Синтаксис
gorand.NewSource(seed)
Для использования функции необходимо импортировать пакет
math/rand.
goimport "math/rand"
Пример
Создадим источник с начальным значением 42 и сгенерируем
три случайных числа типа int64:
gopackage main
import (
"fmt"
"math/rand"
)
func main() {
src := rand.NewSource(42)
r := rand.New(src)
res1 := r.Int63()
res2 := r.Int63()
res3 := r.Int63()
fmt.Println(res1)
fmt.Println(res2)
fmt.Println(res3)
}
Результат выполнения кода:
go1532268284764708450
8902157714064649733
2816270544665174715
Пример
Покажем, что при одинаковом начальном значении последовательность чисел всегда одинакова:
gopackage main
import (
"fmt"
"math/rand"
)
func main() {
src1 := rand.NewSource(100)
r1 := rand.New(src1)
src2 := rand.NewSource(100)
r2 := rand.New(src2)
res1 := r1.Int63()
res2 := r2.Int63()
fmt.Println(res1 == res2)
}
Результат выполнения кода:
gotrue
Пример
Используем rand.NewSource для генерации чисел
в заданном диапазоне с помощью Intn:
gopackage main
import (
"fmt"
"math/rand"
)
func main() {
src := rand.NewSource(12345)
r := rand.New(src)
res1 := r.Intn(100)
res2 := r.Intn(100)
res3 := r.Intn(100)
fmt.Println(res1)
fmt.Println(res2)
fmt.Println(res3)
}
Результат выполнения кода:
go38
85
99
Смотрите также
-
функцию
rand.New,
которая создает генератор случайных чисел из источника -
функцию
rand.Seed,
которая задает начальное значение для глобального генератора -
функцию
rand.Int63,
которая возвращает неотрицательное 63-битное число -
функцию
rand.Intn,
которая возвращает число в диапазоне [0, n)