std::mersenne_twister_engine::mersenne_twister_engine

来自cppreference.com
 
 
 
 
 
explicit mersenne_twister_engine( result_type value = default_seed );
(1) (C++11 起)
template< class Sseq >
explicit mersenne_twister_engine( Sseq& s );
(2) (C++11 起)
mersenne_twister_engine( const mersenne_twister_engine& );
(3) (C++11 起)
(隐式声明)

构造伪随机数引擎。

1) 构造引擎并初始化状态( result_type 类型的 n 个值 X
i
)如下:用 value mod 2w
初始化 X
0
,并递推初始化其余内容,对于 i=1-n,...,-1 ,初始化每个 X
i
被为 [f·(X
i-1
xor(X
i-1
rshift(w-2)))+i mod n] mod 2w
2) 构造引擎并通过调用 s.generate(a, a+n*k) 初始化状态,其中 a 是长为 n*k 的数组,而 k 为 ceil(w/32) ,然后,对于每个 i=-n,...,-1 ,递推地设置引擎状态的元素 X
i
k-1
j=0
a
k(i+n)+j}·232j
) mod 2w
,最后若 X
0
的最高 w-r 位为零,且若所有其他 X
i
均为零,则以 2w-1
替换 X
0

注意:初始化要求基于梅森缠绕器的 2002 版本, mt19937ar.c

仅若 Sseq 符合重载种子序列 (SeedSequence) , (2) 才参与重载决议。尤其是若 Sseq 可转换为 result_type ,则该重载被从候选函数集中排除。

[编辑] 参数

value - 用于内部状态初始化的种子值
s - 用于内部状态初始化的种子序列

[编辑] 复杂度

n (状态大小)成线性

[编辑] 参阅

设置引擎的当前状态
(公开成员函数) [编辑]