Генератор перестановки конгруэнтности (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 имеет период
и поддерживает продвижение на произвольное количество шагов, а также
потоков. Конкретный член семейства 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–2021 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.20/reference/random/bit_generators/pcg64.html