Spec-Zone.ru › NumPy 2.0

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

classnumpy.random.PCG64DXSM(seed=None)

BitGenerator для псевдослучайного числа генератора 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 для получения значений энтропии и использования этих значений для генерации новых BitGenerator:

>>> 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–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/bit_generators/pcg64dxsm.html

Spec-Zone.ru

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