Spec-Zone.ru › NumPy 1.21

Перестановный конгруэнтный генератор (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-битная реализация перестановного конгруэнтного генератора О’Нила ([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. Одно — состояние ПСЧГ, которое продвигается линейным конгруэнтным генератором (ЛКГ). Второе — фиксированное нечетное приращение, используемое в ЛКГ.

Входное семя обрабатывается 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–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/random/bit_generators/pcg64.html

Spec-Zone.ru

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