Перестановочный конгруэнтный генератор (64-битный, PCG64)#
- класс numpy.random.PCG64(seed=None)#
BitGenerator для генератора псевдослучайных чисел PCG-64.
- Параметры:
- seed{None, int, array_like[ints], SeedSequence}, необязательный
Семя для инициализации
BitGenerator. Если None, то свежая, непредсказуемая энтропия будет взята из ОС. Еслиintилиarray_like[ints]передается, то он будет передан вSeedSequenceдля получения начальногоBitGeneratorсостояние. Также можно передатьSeedSequenceэкземпляр.
Примечания
PCG-64 — это 128-битная реализация генератора перестановочных конгруэнций О'Нила ([1], [2]). PCG-64 имеет период \(2^{128}\) и поддерживает продвижение на произвольное количество шагов, а также \(2^{127}\) потоки. Конкретный член семейства PCG, который мы используем, – PCG XSL RR 128/64, как описано в статье ([2]).
PCG64предоставляет капсулу, содержащую указатели на функции, которые производят числа с плавающей запятой двойной точности, а также беззнаковые 32- и 64-битные целые числа. Они не могут быть использованы напрямую в Python и должны быть обработаныGeneratorили аналогичный объект, поддерживающий низкоуровневый доступ.Поддерживает метод
advanceдля продвижения ГСЧ на произвольное количество шагов. Состояние ГСЧ PCG-64 представлено 2 128-битными беззнаковыми целыми числами.Состояние и инициализация
The
PCG64вектор состояния состоит из 2 беззнаковых 128-битных значений, которые внешне представлены как целые числа Python. Одно из них — состояние ГПСЧ, которое продвигается линейным конгруэнтным генератором (LCG). Второе — фиксированное нечетное приращение, используемое в LCG.Входное начальное значение обрабатывается
SeedSequenceдля генерации обоих значений. Приращение не может быть установлено независимо.Параллельные возможности
Предпочтительный способ использования BitGenerator в параллельных приложениях - использовать
SeedSequence.spawnметод для получения значений энтропии и их использования для генерации новых BitGenerators:>>> from numpy.random import Generator, PCG64, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(PCG64(s)) for s in sg.spawn(10)]
Гарантия совместимости
PCG64гарантирует, что фиксированное начальное значение всегда будет давать одинаковый поток случайных целых чисел.Ссылки
Состояние#
Получить или установить состояние ГПСЧ |