##
table of contents

std::mersenne_twister_engine::mersenne_twister_engine(3) | C++ Standard Libary | std::mersenne_twister_engine::mersenne_twister_engine(3) |

# NAME¶

std::mersenne_twister_engine::mersenne_twister_engine - std::mersenne_twister_engine::mersenne_twister_engine

# Synopsis¶

mersenne_twister_engine() : **(1)** *(since C++11)*

mersenne_twister_engine(default_seed) {}

explicit mersenne_twister_engine( result_type value ); **(2)** *(since
C++11)*

template< class Sseq > **(3)** *(since C++11)*

explicit mersenne_twister_engine( Sseq& s );

mersenne_twister_engine( const mersenne_twister_engine& ); **(4)**
*(since C++11)*

(implicitly declared)

Constructs the pseudo-random number engine.

1) Default constructor. Seeds the engine with default_seed.

2) 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-1xor(X

i-1rshift(w-2)))+i mod n] mod 2w

3) 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=0a

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 **(3)** 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)

Defect reports

The following behavior-changing defect reports were applied retroactively to

previously published C++ standards.

DR Applied to Behavior as published Correct behavior

P0935R0 C++11 default constructor was explicit made implicit

# See also¶

seed sets the current state of the engine

*(C++11)* *(public member function)*

2022.07.31 | http://cppreference.com |