Перестановочный конгруэнтный генератор (64-битный, PCG64 DXSM)#
- класс numpy.random.PCG64DXSM(seed=None)#
BitGenerator для генератора псевдослучайных чисел PCG-64 DXSM.
- Параметры:
- seed{None, int, array_like[ints], SeedSequence}, необязательный
Семя для инициализации
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для продвижения ГСЧ на произвольное количество шагов. Состояние ГСЧ PCG-64 DXSM представлено 2 128-битными беззнаковыми целыми числами.Состояние и инициализация
The
PCG64DXSMвектор состояния состоит из 2 беззнаковых 128-битных значений, которые внешне представлены как целые числа Python. Одно из них — состояние ГПСЧ, которое продвигается линейным конгруэнтным генератором (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гарантирует, что фиксированное начальное значение всегда будет давать одинаковый поток случайных целых чисел.Ссылки
Состояние#
Получить или установить состояние ГПСЧ |