Генератор пермутированных конгруэнтных чисел (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 имеет период
и поддерживает продвижение на произвольное количество шагов, а также
потоков. Конкретный член семейства 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гарантирует, что фиксированное семено всегда будет генерировать тот же поток случайных целых чисел.Список литературы
Состояние
Получение или установка состояния генератора ПСЧ |
Параллельная генерация
| Перемещает подлежащий генератор случайных чисел так, как будто произошло delta вызовов. |
| Возвращает новый генератор битов, со сдвинутым состоянием. |
Расширение
CFFI интерфейс | |
ctypes интерфейс |
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.18/reference/random/bit_generators/pcg64.html