Spec-Zone.ru › NumPy 2.0

Генератор перестановки (64-битный, PCG64)

classnumpy.random.PCG64(seed=None)

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

Параметры:
seed{None, int, array_like[ints], SeedSequence}, необязательно

Зерно для инициализации 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. Одно — состояние ГСЧ, которое продвигает линейный конгруэнтный генератор (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)

О’Нилл, Мелисса Э. “PCG: Семья простых, быстрых, эффективных с точки зрения памяти статистически хороших алгоритмов для генерации случайных чисел”

Состояние

state

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

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

advance(delta)

Продвиньте подлежащий ГСЧ так, как будто произошло 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/pcg64.html

Spec-Zone.ru

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