# std::mersenne_twister_engine

From cppreference.com
< cpp‎ | numeric‎ | random

Defined in header `<random>` |  |
template< class UIntType, size_t w, size_t n, size_t m, size_t r, UIntType a, size_t u, UIntType d, size_t s, UIntType b, size_t t, UIntType c, size_t l, UIntType f > class mersenne_twister_engine; |  | (since C++11)

`mersenne_twister_engine` is a random number engine based on Mersenne Twister algorithm. It produces high quality unsigned integer random numbers of type `UIntType` on the interval [0, 2w
-1].

The following type aliases define the random number engine with two commonly used parameter sets:

Defined in header `<random>`
Type | Definition
`mt19937`(C++11) | std::mersenne_twister_engine< std::uint_fast32_t, 32, 624, 397, 31, 0x9908b0df, 11, 0xffffffff, 7, 0x9d2c5680, 15, 0xefc60000, 18, 1812433253> 32-bit Mersenne Twister by Matsumoto and Nishimura, 1998
`mt19937_64`(C++11) | std::mersenne_twister_engine< std::uint_fast64_t, 64, 312, 156, 31, 0xb5026f5aa96619e9, 29, 0x5555555555555555, 17, 0x71d67fffeda60000, 37, 0xfff7eee000000000, 43, 6364136223846793005> 64-bit Mersenne Twister by Matsumoto and Nishimura, 2000

### Member types

Member type | Definition
`result_type` | The integral type generated by the engine. Results are undefined if this is not an unsigned integral type.

### Member functions

##### Construction and Seeding

(constructor) | constructs the engine (public member function)
seed | sets the current state of the engine (public member function)

##### Generation

operator() | advances the engine's state and returns the generated value (public member function)
discard | advances the engine's state by a specified amount (public member function)

##### Characteristics

min [static] | gets the smallest possible value in the output range (public static member function)
max [static] | gets the largest possible value in the output range (public static member function)

### Non-member functions

operator==operator!= | compares the internal states of two pseudo-random number engines (function template)
operator<<operator>> | performs stream input and output on pseudo-random number engine (function template)

### Member objects

constexpr size_t word_size [static] | the template parameter `w`, determines the range of values generated by the engine. (public static member constant)
constexpr size_t state_size [static] | the template parameter `n`. The engine state is `n` values of `UIntType` (public static member constant)
constexpr size_t shift_size [static] | the template parameter `m` (public static member constant)
constexpr size_t mask_bits [static] | the template parameter `r`, also known as the twist value. (public static member constant)
constexpr UIntType xor_mask [static] | the template parameter `a`, the conditional xor-mask. (public static member constant)
constexpr size_t tempering_u [static] | the template parameter `u`, first component of the bit-scrambling (tempering) matrix (public static member constant)
constexpr UIntType tempering_d [static] | the template parameter `d`, second component of the bit-scrambling (tempering) matrix (public static member constant)
constexpr size_t tempering_s [static] | the template parameter `s`, third component of the bit-scrambling (tempering) matrix (public static member constant)
constexpr UIntType tempering_b [static] | the template parameter `b`, fourth component of the bit-scrambling (tempering) matrix (public static member constant)
constexpr size_t tempering_t [static] | the template parameter `t`, fifth component of the bit-scrambling (tempering) matrix (public static member constant)
constexpr UIntType tempering_c [static] | the template parameter `c`, sixth component of the bit-scrambling (tempering) matrix (public static member constant)
constexpr size_t tempering_l [static] | the template parameter `l`, seventh component of the bit-scrambling (tempering) matrix (public static member constant)
constexpr UIntType initialization_multiplier [static] | the template parameter `f` (public static member constant)
constexpr UIntType default_seed [static] | the constant value 5489u (public static member constant)

### Notes

The 10000th consecutive invocation of a default-constructed `std::mt19937` is required to produce the value 4123659995.

The 10000th consecutive invocation of a default-constructed `std::mt19937_64` is required to produce the value 9981545732273789042

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/numeric/random/mersenne_twister_engine&oldid=109491"