Spec-Zone.ru › NumPy 1.19

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

class numpy.random.PCG64(seed=None)

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

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

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

Примечания

PCG-64 — это 128-битная реализация пермутированного конгруэнтного генератора O’Neill ([1], [2]). PCG-64 имеет период 2^{128} и поддерживает продвижение на произвольное количество шагов, а также 2^{127} потоков. Конкретный член семейства PCG, который мы используем, — PCG XSL RR 128/64, как описано в статье ([2]).

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

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

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

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

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

1

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

2(1,2)

O’Neill, Melissa E. “PCG: Семейство простых быстрых экономичных статистически хороших алгоритмов для генерации случайных чисел”

Состояние

state

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

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

advance(delta)

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

jumped([jumps])

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

Расширение

cffi

Интерфейс CFFI

ctypes

Интерфейс ctypes

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

Spec-Zone.ru

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