Spec-Zone.ru › NumPy 1.20

Генератор перестановки конгруэнтности (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 представлено 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)

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

Состояние

state

Получение или установка состояния генератора псевдослучайных чисел

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

advance(delta)

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

jumped([jumps])

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

Расширение

cffi

Интерфейс CFFI

ctypes

Интерфейс ctypes

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

Spec-Zone.ru

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