Spec-Zone.ru › NumPy 1.17

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

class numpy.random.pcg64.PCG64(seed_seq=None)

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

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

Зародыш для инициализации BitGenerator. Если None, то свежая, непредсказуемая энтропия будет взята из операционной системы. Если передано int или array_like[ints], то оно будет передано в SeedSequence, чтобы вывести начальное состояние BitGenerator. Также можно передать реализацию интерфейса ISeedSequence , например, 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 для продвижения RNG на произвольное число шагов. Состояние PCG-64 RNG представлено 2 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–2019 NumPy Developers
Licensed under the 3-clause BSD License.
https://docs.scipy.org/doc/numpy-1.17.0/reference/random/bit_generators/pcg64.html

Spec-Zone.ru

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