Переставленный конгруэнтный генератор (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-битная реализация пермутированного конгруэнтного генератора O’Neill ([1], [2]). PCG-64 имеет период
и поддерживает продвижение на произвольное количество шагов, а также
потоков. Конкретный член семейства PCG, который мы используем, — PCG XSL RR 128/64, как описано в статье ([2]).
PCG64предоставляет капсулу, содержащую указатели на функции, которые производят двойные и беззнаковые 32 и 64-битные целые числа. Они не могут быть напрямую использованы в Python и должны быть использованы объектомGeneratorили аналогичным объектом, который поддерживает низкоуровневый доступ.Поддерживает метод
advanceдля продвижения генератора псевдослучайных чисел на произвольное количество шагов. Состояние генератора псевдослучайных чисел PCG-64 представлено двумя 128-битными беззнаковыми целыми числами.Состояние и Инициализация
Вектор состояния
PCG64состоит из 2 беззнаковых 128-битных значений, которые внешне представлены как целые числа Python. Одно — состояние PRNG, которое расширяется линейным конгруэнтным генератором (LCG). Второе — фиксированное нечетное приращение, используемое в LCG.Входное зерно обрабатывается
SeedSequenceдля генерации обоих значений. Приращение не может быть установлено независимо.Параллельные особенности
Предпочтительный способ использования BitGenerator в параллельных приложениях — использование метода
SeedSequence.spawnдля получения значений энтропии и использования этих значений для генерации новых BitGenerators:>>> from numpy.random import Generator, PCG64, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(PCG64(s)) for s in sg.spawn(10)]
Гарантия совместимости
PCG64гарантирует, что фиксированное зерно всегда будет производить одну и ту же последовательность случайных целых чисел.Список литературы
Состояние
Получить или установить состояние PRNG |
Параллельная генерация
| Продвинуть основной генератор RNG, как будто произошло delta вызовов. |
| Возвращает новый генератор битов со скорректированным состоянием. |
Расширение
Интерфейс CFFI | |
Интерфейс ctypes |
© 2005–2020 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.19/reference/random/bit_generators/pcg64.html