Перестановочный конгруэнтный генератор (64-битный, PCG64 DXSM)#

класс numpy.random.PCG64DXSM(seed=None)#

BitGenerator для генератора псевдослучайных чисел PCG-64 DXSM.

Параметры:
seed{None, int, array_like[ints], SeedSequence}, необязательный

Семя для инициализации BitGenerator. Если None, то свежая, непредсказуемая энтропия будет взята из ОС. Если int или array_like[ints] передается, то он будет передан в SeedSequence для получения начального BitGenerator состояние. Также можно передать SeedSequence экземпляр.

Примечания

PCG-64 DXSM — это 128-битная реализация перестановочного конгруэнтного генератора О'Нила ([1], [2]). PCG-64 DXSM имеет период \(2^{128}\) и поддерживает продвижение на произвольное количество шагов, а также \(2^{127}\) потоков. Конкретный член семейства PCG, который мы используем, — PCG CM DXSM 128/64. Он отличается от PCG64 в том, что использует более сильную выходную функцию DXSM, 64-битный "дешёвый множитель" в LCG и выводит из состояния перед его обновлением, а не обновляет-затем-выводит.

PCG64DXSM предоставляет капсулу, содержащую указатели на функции, которые производят числа с плавающей запятой двойной точности, а также беззнаковые 32- и 64-битные целые числа. Они не могут быть использованы напрямую в Python и должны быть обработаны Generator или аналогичный объект, поддерживающий низкоуровневый доступ.

Поддерживает метод advance для продвижения ГСЧ на произвольное количество шагов. Состояние ГСЧ PCG-64 DXSM представлено 2 128-битными беззнаковыми целыми числами.

Состояние и инициализация

The PCG64DXSM вектор состояния состоит из 2 беззнаковых 128-битных значений, которые внешне представлены как целые числа Python. Одно из них — состояние ГПСЧ, которое продвигается линейным конгруэнтным генератором (LCG). Второе — фиксированное нечетное приращение, используемое в LCG.

Входное начальное значение обрабатывается SeedSequence для генерации обоих значений. Приращение не может быть установлено независимо.

Параллельные возможности

Предпочтительный способ использования BitGenerator в параллельных приложениях - использовать SeedSequence.spawn метод для получения значений энтропии и их использования для генерации новых BitGenerators:

>>> from numpy.random import Generator, PCG64DXSM, SeedSequence
>>> sg = SeedSequence(1234)
>>> rg = [Generator(PCG64DXSM(s)) for s in sg.spawn(10)]

Гарантия совместимости

PCG64DXSM гарантирует, что фиксированное начальное значение всегда будет давать одинаковый поток случайных целых чисел.

Ссылки

Состояние#

state

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

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

advance(дельта)

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

jumped([jumps])

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

Расширение#

cffi

CFFI интерфейс

ctypes

интерфейс ctypes