numpy.random.
MT19937
梅森捻线机伪随机数发生器的容器。
初始化的种子 BitGenerator . 如果没有,那么新的,不可预测的熵将从操作系统中提取。如果 int 或 array_like[ints] 如果通过了,那么它将被传递给 SeedSequence 导出初始值 BitGenerator 州。你也可以通过 SeedSequence 实例。
BitGenerator
int
array_like[ints]
SeedSequence
笔记
MT19937 提供包含生成双精度、无符号32位和64位整数的函数指针的胶囊 [1]. 它们在Python中不能直接使用,必须由 Generator 或支持低级访问的类似对象。
Generator
Python stdlib模块“random”还包含Mersenne Twister伪随机数生成器。
状态和种子
这个 MT19937 状态向量由一个由32位无符号整数组成的624元素数组加上一个0到624之间的单个整数值组成,该整数值用于索引主数组中的当前位置。
输入种子由 SeedSequence 填满整个州。第一个元素被重置,以便只设置其最高有效位。
平行特征
在并行应用程序中使用位生成器的首选方法是使用 SeedSequence.spawn 方法获取熵值,并使用这些值生成新的位生成器:
SeedSequence.spawn
>>> from numpy.random import Generator, MT19937, SeedSequence >>> sg = SeedSequence(1234) >>> rg = [Generator(MT19937(s)) for s in sg.spawn(10)]
另一种方法是 MT19937.jumped 使国家进步好像 已生成随机数 ([1], [2]) . 这允许拆分原始序列,以便在每个工作进程中使用不同的段。所有生成器都应该链接起来,以确保这些段来自相同的序列。
MT19937.jumped
>>> from numpy.random import Generator, MT19937, SeedSequence >>> sg = SeedSequence(1234) >>> bit_generator = MT19937(sg) >>> rg = [] >>> for _ in range(10): ... rg.append(Generator(bit_generator)) ... # Chain the BitGenerators ... bit_generator = bit_generator.jumped()
兼容性保证
MT19937 保证一个固定的种子和将始终产生相同的随机整数流。
工具书类
Hiroshi Haramoto、Makoto Matsumoto和Pierre L'Ecuyer,“多项式空间中线性递归的快速跳前算法”,序列及其应用-SETA,290--2982008。
Hiroshi Haramoto、Makoto Matsumoto、Takuji Nishimura、François Panneton、Pierre L'Ecuyer,“F2线性随机数生成器的有效提前跳转”,通知计算杂志,第20卷,第3期,2008年夏季,第385-390页。
锁定共享的实例,以便同一位git生成器可以在多个生成器中使用,而不会损坏状态。从位生成器生成值的代码应该保持位生成器的锁。
state
获取或设置PRNG状态
jumped \ [jumps] )
jumped
返回状态为跳转的新位生成器
cffi
CFFI接口
ctypes
ctypes接口