Функция rand.NewSource
Функция rand.NewSource создает новый источник
псевдослучайных чисел. В качестве единственного параметра
она принимает целочисленное значение seed
(начальное число), которое определяет начальное состояние
генератора. При одинаковом значении seed
генератор будет выдавать одинаковую последовательность чисел,
что полезно для воспроизводимости результатов. Функция
возвращает значение типа rand.Source, которое можно
использовать для создания генератора с помощью
rand.New.
Синтаксис
rand.NewSource(seed)
Для использования функции необходимо импортировать пакет
math/rand.
import "math/rand"
Пример
Создадим источник с начальным значением 42 и сгенерируем
три случайных числа типа int64:
package 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)
}
Результат выполнения кода:
1532268284764708450
8902157714064649733
2816270544665174715
Пример
Покажем, что при одинаковом начальном значении последовательность чисел всегда одинакова:
package 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)
}
Результат выполнения кода:
true
Пример
Используем rand.NewSource для генерации чисел
в заданном диапазоне с помощью Intn:
package 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)
}
Результат выполнения кода:
38
85
99
Смотрите также
-
функцию
rand.New,
которая создает генератор случайных чисел из источника -
функцию
rand.Seed,
которая задает начальное значение для глобального генератора -
функцию
rand.Int63,
которая возвращает неотрицательное 63-битное число -
функцию
rand.Intn,
которая возвращает число в диапазоне [0, n)