FreeBSD Manual Pages
std::mersen...ster_engine(3) C++ Standard Libary std::mersen...ster_engine(3) NAME std::mersenne_twister_engine - std::mersenne_twister_engine Synopsis Defined in header <random> template< class UIntType, std::size_t w, std::size_t n, std::size_t m, std::size_t r, UIntType a, std::size_t u, UIntType d, std::size_t s, (since C++11) UIntType b, std::size_t t, UIntType c, std::size_t l, UIntType f > class mersenne_twister_engine; 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 \(\scriptsize {[0,2^w)}\)[0, 2w ). The following type aliases define the random number engine with two commonly used parameter sets: Defined in header <random> Type Definition std::mersenne_twister_engine<std::uint_fast32_t, 32, 624, 397, 31, 0x9908b0df, 11, mt19937(C++11) 0xffffffff, 7, 0x9d2c5680, 15, 0xefc60000, 18, 1812433253> 32-bit Mersenne Twister by Matsumoto and Nishimura, 1998 std::mersenne_twister_engine<std::uint_fast64_t, 64, 312, 156, 31, 0xb5026f5aa96619e9, 29, mt19937_64(C++11) 0x5555555555555555, 17, 0x71d67fffeda60000, 37, 0xfff7eee000000000, 43, 6364136223846793005> 64-bit Mersenne Twister by Matsumoto and Nishimura, 2000 Template parameters The result type generated by the generator. The effect is undefined if UIntType - this is not one of unsigned short, unsigned int, unsigned long, or unsigned long long. w - the power of two that determines the range of values gen- erated by the engine n - the degree of recurrence m - the middle word, an offset used in the recurrence rela- tion defining the series x, 1 m < n r - the number of bits of the lower bit-mask, 0 r w - 1, also known as the twist value a - the conditional xor-mask, i.e. the coefficients of the rational normal form twist matrix u - 1st component of the bit-scrambling (tempering) matrix d - 2nd component of the bit-scrambling (tempering) matrix s - 3rd component of the bit-scrambling (tempering) matrix b - 4th component of the bit-scrambling (tempering) matrix t - 5th component of the bit-scrambling (tempering) matrix c - 6th component of the bit-scrambling (tempering) matrix l - 7th component of the bit-scrambling (tempering) matrix f - the initialization multiplier The following relations shall hold: 0 < m <= n, 2 < w, r <= w, u <= w, s <= w, t <= w, l <= w, w <= std::numeric_limits<UIntType>::digits, a <= 2^w-1, b <= 2^w-1, c <= 2^w-1, d <= 2^w-1, and f <= 2^w-1 (a^b denotes a to the power of b) Member types Member type Definition result_type(C++11) The integral type, UIntType, generated by the en- gine. Results are undefined if this is not an unsigned integral type. Member functions Construction and Seeding constructor constructs the engine (C++11) (public member function) seed sets the current state of the engine (C++11) (public member function) Generation operator() advances the engine's state and returns the gener- ated value (C++11) (public member function) discard advances the engine's state by a specified amount (C++11) (public member function) Characteristics min gets the smallest possible value in the output range [static] (C++11) (public static member function) max gets the largest possible value in the output range [static] (C++11) (public static member function) Non-member functions operator== compares the internal states of two pseudo-random number operator!= engines (C++11) (function) (C++11)(removed in C++20) operator<< performs stream input and output on pseudo-random number operator>> engine (C++11) (function template) Member constants constexpr size_t word_size the template parameter w, determines the range of [static] (C++11) values generated by the engine. (public static member constant) constexpr size_t state_size the template parameter n. The engine state is n [static] (C++11) values of UIntType (public static member constant) constexpr size_t shift_size the template parameter m [static] (C++11) (public static member constant) constexpr size_t mask_bits the template parameter r, also known as the twist [static] (C++11) value. (public static member constant) constexpr UIntType xor_mask the template parameter a, the condi- tional xor-mask. [static] (C++11) (public static member constant) constexpr size_t tempering_u the template parameter u, first com- ponent of the [static] (C++11) bit-scrambling (tempering) matrix (public static member constant) constexpr UIntType tempering_d the template parameter d, second component of the [static] (C++11) bit-scrambling (tempering) matrix (public static member constant) constexpr size_t tempering_s the template parameter s, third com- ponent of the [static] (C++11) bit-scrambling (tempering) matrix (public static member constant) constexpr UIntType tempering_b the template parameter b, fourth component of the [static] (C++11) bit-scrambling (tempering) matrix (public static member constant) constexpr size_t tempering_t the template parameter t, fifth com- ponent of the [static] (C++11) bit-scrambling (tempering) matrix (public static member constant) constexpr UIntType tempering_c the template parameter c, sixth com- ponent of the [static] (C++11) bit-scrambling (tempering) matrix (public static member constant) constexpr size_t tempering_l the template parameter l, seventh component of the [static] (C++11) bit-scrambling (tempering) matrix (public static member constant) constexpr UIntType the template parameter f initialization_multiplier (public static member constant) [static] (C++11) constexpr UIntType default_seed the constant value 5489u [static] (C++11) (public static member constant) Notes The Nth consecutive invocation of a default-constructed engine is required to produce the following value: N The random engine type The value to produce 10000 std::mt19937 4123659995 10000 std::mt19937_64 9981545732273789042 // Run this code #include <random> #include <cassert> int main() { std::mt19937 gen32; std::mt19937_64 gen64; for (auto n{1}; n != 10'000; gen32(), gen64(), ++n); assert(gen32() == 4'123'659'995 and gen64() == 9'981'545'732'273'789'042ULL); } http://cppreference.com 2022.07.31 std::mersen...ster_engine(3)
NAME | Synopsis | Template parameters | Member types | Member functions | Construction and Seeding | Generation | Characteristics | Non-member functions | Member constants | Notes
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::mersenne_twister_engine&sektion=3&manpath=FreeBSD+Ports+15.0>
