Перемещаемый конгруэнтный генератор (64-битный, PCG64 DXSM)
- classnumpy.random.PCG64DXSM(seed=None)
-
BitGenerator для псевдослучайного числа генератора 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для получения значений энтропии и использования этих значений для генерации новых BitGenerator:>>> from numpy.random import Generator, PCG64DXSM, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(PCG64DXSM(s)) for s in sg.spawn(10)]
Гарантия Совместимости
PCG64DXSMгарантирует, что фиксированное семя всегда будет производить одну и ту же последовательность случайных целых чисел.Ссылки
Состояние
Получение или установка состояния PRNG |
Параллельная генерация
Расширение
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/bit_generators/pcg64dxsm.html