29 Numerics library [numerics]

29.6 Random number generation [rand]

29.6.5 Engines and engine adaptors with predefined parameters [rand.predef]

using minstd_rand0 = linear_congruential_engine<uint_fast32_t, 16807, 0, 2147483647>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а minstd_­rand0 должен получить значение 1043618065.

using minstd_rand = linear_congruential_engine<uint_fast32_t, 48271, 0, 2147483647>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а minstd_­rand должен получить значение 399268537.

using mt19937 = mersenne_twister_engine<uint_fast32_t, 32,624,397,31,0x9908b0df,11,0xffffffff,7,0x9d2c5680,15,0xefc60000,18,1812433253>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а mt19937 должен получить значение 4123659995.

using mt19937_64 = mersenne_twister_engine<uint_fast64_t, 64,312,156,31,0xb5026f5aa96619e9,29, 0x5555555555555555,17, 0x71d67fffeda60000,37, 0xfff7eee000000000,43, 6364136223846793005>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а mt19937_­64 должен получить значение 9981545732273789042.

using ranlux24_base = subtract_with_carry_engine<uint_fast32_t, 24, 10, 24>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а ranlux24_­base должен получить значение 7937952.

using ranlux48_base = subtract_with_carry_engine<uint_fast64_t, 48, 5, 12>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а ranlux48_­base должен получить значение 61839128582725.

using ranlux24 = discard_block_engine<ranlux24_base, 223, 23>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а ranlux24 должен получить значение 9901578.

using ranlux48 = discard_block_engine<ranlux48_base, 389, 11>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а ranlux48 должен получить значение 249142670248501.

using knuth_b = shuffle_order_engine<minstd_rand0,256>;

Required behavior: 10000th Последовательный вызов по умолчанию построенного объекта типа а knuth_­b должен получить значение 1112339016.

using default_random_engine = implementation-defined;

Remarks: Выбор типа двигателя, названного этим, typedef определяется реализацией. [ Note: Реализация может выбрать этот тип на основе производительности, размера, качества или любой комбинации таких факторов, чтобы обеспечить, по крайней мере, приемлемое поведение двигателя для относительно случайного, неопытного и / или легкого использования. Поскольку разные реализации могут выбирать разные типы базовых механизмов, код, использующий это, typedef не должен генерировать идентичные последовательности для разных реализаций. ] end note