Spec-Zone.ru › NumPy 1.18

Генератор пермутированных конгруэнтных чисел (64-битный, PCG64)

class numpy.random.PCG64(seed_seq=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 представлено 2 128-битными целыми числами без знака.

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

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

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

Параллельные Функции

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

>>> 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

Получение или установка состояния генератора ПСЧ

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

advance(delta)

Перемещает подлежащий генератор случайных чисел так, как будто произошло delta вызовов.

jumped([jumps])

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

Расширение

cffi

CFFI интерфейс

ctypes

ctypes интерфейс

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

Spec-Zone.ru

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