Генератор перестановки (64-битный, PCG64 DXSM)
- class numpy.random.PCG64DXSM(seed=None)
-
Битовый генератор для псевдослучайного числа генератора PCG-64 DXSM.
- Параметры
-
- seed{None, int, array_like[ints], SeedSequence}, optional
-
Семена для инициализации
BitGenerator. Если None, то свежая, непредсказуемая энтропия будет взята из ОС. Если переданоintилиarray_like[ints], то оно будет передано вSeedSequenceдля вывода начального состоянияBitGenerator. Также можно передать экземплярSeedSequence.
Примечания
PCG-64 DXSM — это 128-битная реализация генератора перестановки конгруэнтности О’Нила ([1], [2]). PCG-64 DXSM имеет период \(2^{128}\) и поддерживает продвижение на произвольное количество шагов, а также \(2^{127}\) потоков. Конкретный член семейства PCG, который мы используем, — PCG CM DXSM 128/64. Он отличается от
PCG64тем, что использует более сильную функцию вывода DXSM, 64-битный «дешевый множитель» в LCG и выводит из состояния перед продвижением, а не продвижение-затем-вывод.PCG64DXSMпредоставляет капсулу, содержащую указатели функций, которые генерируют числа с плавающей точкой двойной точности и целые числа с беззнаковым 32 и 64 разрядами. Они не непосредственно потребляемы в Python и должны быть потреблены объектомGeneratorили аналогичным объектом, который поддерживает доступ на низком уровне.Поддерживает метод
advanceдля продвижения генератора RNG на произвольное количество шагов. Состояние RNG PCG-64 DXSM представлено 2 128-битными беззнаковыми целыми числами.Состояние и инициализация
Вектор состояния
PCG64DXSMсостоит из 2 беззнаковых 128-битных значений, которые внешне представлены целыми числами Python. Один представляет состояние PRNG, которое продвигается линейным конгруэнтным генератором (LCG). Второй — фиксированное нечётное приращение, используемое в LCG.Входное семя обрабатывается
SeedSequenceдля генерации обоих значений. Приращение не может быть задано независимо.Параллельная генерация
Предпочтительный способ использования BitGenerator в параллельных приложениях — использование метода
SeedSequence.spawnдля получения значений энтропии и использование этих значений для генерации новых BitGenerators:>>> from numpy.random import Generator, PCG64DXSM, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(PCG64DXSM(s)) for s in sg.spawn(10)]
Гарантия совместимости
PCG64DXSMгарантирует, что фиксированное семя всегда будет производить одну и ту же последовательность случайных целых чисел.Список литературы
Состояние
Получить или установить состояние PRNG |
Параллельная генерация
| Продвинуть основной генератор RNG так, как будто произошло delta выборов. |
| Возвращает новый генератор битов со скользящим состоянием. |
Расширение
Интерфейс CFFI | |
Интерфейс ctypes |
© 2005–2022 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/1.21/reference/random/bit_generators/pcg64dxsm.html