CppDS.com

C++ 98 11 14 17 20 手册

std::mersenne_twister_engine<UIntType,w,n,m,r,a,u,d,s,b,t,c,l,f>::mersenne_twister_engine

来自cppreference.com

 
 
数值库
常用数学函数
数学特殊函数 (C++17)
数学常数 (C++20)
浮点环境 (C++11)
复数
数值数组
伪随机数生成
编译时有理数算术 (C++11)
数值算法
(C++17)
(C++17)
插值
(C++20)
(C++20)
通用数值运算
(C++11)
位操作
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
 
 
 
mersenne_twister_engine() : mersenne_twister_engine(default_seed) {}
(1) (C++11 起)
explicit mersenne_twister_engine( result_type value );
(2) (C++11 起)
template< class Sseq >
explicit mersenne_twister_engine( Sseq& s );
(3) (C++11 起)
mersenne_twister_engine( const mersenne_twister_engine& );
(4) (C++11 起)
(隐式声明)

构造伪随机数引擎。

1) 默认构造函数。以 default_seed 播种引擎。
2) 构造引擎并初始化状态( 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
3) 构造引擎并通过调用 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) (3) 才参与重载决议。尤其是若 Sseq 可转换为 result_type ,则从候选函数集中排除该重载。

参数

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

复杂度

n (状态大小)成线性

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

DR 应用于 出版时的行为 正确行为
P0935R0 C++11 默认构造函数曾为 explicit 使之为隐式

参阅

设置引擎的当前状态
(公开成员函数)
关闭