Перестановочный конгруэнтный генератор (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 гарантирует, что фиксированное начальное значение всегда будет давать одинаковый поток случайных целых чисел.

Ссылки

Состояние#

state

Получить или установить состояние ГПСЧ

Параллельная генерация#

advance(дельта)

Продвиньте базовый ГСЧ, как если бы произошло delta выборок.

jumped([jumps])

Возвращает новый генератор случайных чисел с перепрыгнутым состоянием.

Расширение#

cffi

CFFI интерфейс

ctypes

интерфейс ctypes