Spec-Zone.ru › NumPy 1.21

Генератор перестановки (64-битный, PCG64 DXSM)

class numpy.random.PCG64DXSM(seed=None)

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

Параметры
seed{None, int, array_like[ints], SeedSequence}, optional

Семена для инициализации 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 для продвижения генератора RNG на произвольное количество шагов. Состояние RNG PCG-64 DXSM представлено 2 128-битными беззнаковыми целыми числами.

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

Вектор состояния PCG64DXSM состоит из 2 беззнаковых 128-битных значений, которые внешне представлены целыми числами Python. Один представляет состояние PRNG, которое продвигается линейным конгруэнтным генератором (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 гарантирует, что фиксированное семя всегда будет производить одну и ту же последовательность случайных целых чисел.

Список литературы

1

“PCG, Семья лучших генераторов случайных чисел”

2

О’Ниил, Мелисса Э. “PCG: Семья простых быстрых экономичных статистически хороших алгоритмов для генерации случайных чисел”

Состояние

state

Получить или установить состояние PRNG

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

advance(delta)

Продвинуть основной генератор RNG так, как будто произошло delta выборов.

jumped([jumps])

Возвращает новый генератор битов со скользящим состоянием.

Расширение

cffi

Интерфейс CFFI

ctypes

Интерфейс ctypes

© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/random/bit_generators/pcg64dxsm.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API