Интерфейс rand.Source
Интерфейс rand.Source определяет контракт для источника случайных чисел.
Он содержит два метода: Int63, который возвращает случайное 63-битное целое число,
и Seed, который инициализирует источник начальным значением.
Этот интерфейс используется функцией rand.New для создания нового генератора случайных чисел.
Синтаксис
type Source interface {
Int63() int64
Seed(seed int64)
}
Пример
Давайте создадим генератор случайных чисел с использованием стандартного источника rand.NewSource:
package main
import (
"fmt"
"math/rand"
)
func main() {
source := rand.NewSource(42)
rnd := rand.New(source)
res := rnd.Int63()
fmt.Println(res)
}
Результат выполнения кода:
"7136427411855439588"
Пример
Создадим два генератора с разными начальными значениями и сравним результаты:
package main
import (
"fmt"
"math/rand"
)
func main() {
source1 := rand.NewSource(1)
rnd1 := rand.New(source1)
source2 := rand.NewSource(2)
rnd2 := rand.New(source2)
res1 := rnd1.Int63()
res2 := rnd2.Int63()
fmt.Println(res1)
fmt.Println(res2)
}
Результат выполнения кода:
"5577006791947779410"
"9571650658724251617"
Пример
Используем метод Seed для повторной инициализации источника:
package main
import (
"fmt"
"math/rand"
)
func main() {
source := rand.NewSource(10)
rnd := rand.New(source)
res1 := rnd.Int63()
source.Seed(10)
rnd = rand.New(source)
res2 := rnd.Int63()
fmt.Println(res1)
fmt.Println(res2)
}
Результат выполнения кода:
"4916763548488312710"
"4916763548488312710"
Смотрите также
-
функцию
rand.NewSource,
которая создает новый источник случайных чисел -
функцию
rand.New,
которая создает новый генератор на основе источника -
функцию
rand.Int63,
которая возвращает случайное 63-битное число -
функцию
rand.Seed,
которая устанавливает начальное значение для глобального генератора