std::mersenne_twister_engine::mersenne_twister_engine

std::mersenne_twister_engine::mersenne_twister_engine

explicit mersenne_twister_engine( result_type value = default_seed );
(1) (since C++11)
template< class Sseq > 
explicit mersenne_twister_engine( Sseq& s );
(2) (since C++11)
mersenne_twister_engine( const mersenne_twister_engine& );
(3) (since C++11)
(implicitly declared)

Constructs the pseudo-random number engine.

1) Constructs the engine and initializes the state (n values X
i
of type result_type) as follows: value mod 2w
is used to initialize X
0
and the rest are initialized iteratively, for i=1-n,...,-1, each X
i
is initialized to [f·(X
i-1
xor(X
i-1
rshift(w-2)))+i mod n] mod 2w
2) Constructs the engine and initializes the state by calling s.generate(a, a+n*k) where a is an array of length n*k and k is ceil(w/32) and then, iteratively for i=-n,...,-1, setting each element of the engine state X
i
to (Σk-1
j=0
a
k(i+n)+j}·232j
) mod 2w
, and finally if the most significant w-r bits of X
0
are zero, and if all other X
i
are zero, replacing X
0
with 2w-1
.

Note: initialization requirements are based on the 2002 version of Mersenne Twister, mt19937ar.c.

The overload (2) only participates in overload resolution if Sseq qualifies as a SeedSequence. In particular, it is excluded from the set of candidate functions if Sseq is convertible to result_type.

Parameters

value - seed value to use in the initialization of the internal state
s - seed sequence to use in the initialization of the internal state

Complexity

linear in n (the state size).

See also

sets the current state of the engine
(public member function)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/numeric/random/mersenne_twister_engine/mersenne_twister_engine

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部