libstdc++: Random Number Generators

libstdc++

Random Number Generators
Numerics » Random Number Generation
Collaboration diagram for Random Number Generators:

## Classes
class | std::discard_block_engine< _RandomNumberEngine, __p, __r >
class | std::independent_bits_engine< _RandomNumberEngine, __w, _UIntType >
class | std::linear_congruential_engine< _UIntType, __a, __c, __m >
class | std::mersenne_twister_engine< _UIntType, __w, __n, __m, __r, __a, __u, __d, __s, __b, __t, __c, __l, __f >
class | std::philox_engine< _UIntType, __w, __n, __r, __consts >
class | std::random_device
class | std::shuffle_order_engine< _RandomNumberEngine, __k >
class | std::subtract_with_carry_engine< _UIntType, __w, __s, __r >

## Typedefs
typedef minstd_rand0 | std::default_random_engine
typedef shuffle_order_engine< minstd_rand0, 256 > | std::knuth_b
typedef linear_congruential_engine< uint_fast32_t, 48271UL, 0UL, 2147483647UL > | std::minstd_rand
typedef linear_congruential_engine< uint_fast32_t, 16807UL, 0UL, 2147483647UL > | std::minstd_rand0
typedef mersenne_twister_engine< uint_fast32_t, 32, 624, 397, 31, 0x9908b0dfUL, 11, 0xffffffffUL, 7, 0x9d2c5680UL, 15, 0xefc60000UL, 18, 1812433253UL > | std::mt19937
typedef mersenne_twister_engine< uint_fast64_t, 64, 312, 156, 31, 0xb5026f5aa96619e9ULL, 29, 0x5555555555555555ULL, 17, 0x71d67fffeda60000ULL, 37, 0xfff7eee000000000ULL, 43, 6364136223846793005ULL > | std::mt19937_64
typedef philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85 > | std::philox4x32
typedef philox_engine< uint_fast64_t, 64, 4, 10, 0xCA5A826395121157, 0x9E3779B97F4A7C15, 0xD2E7470EE14C6C93, 0xBB67AE8584CAA73B > | std::philox4x64
typedef discard_block_engine< ranlux24_base, 223, 23 > | std::ranlux24
typedef subtract_with_carry_engine< uint_fast32_t, 24, 10, 24 > | std::ranlux24_base
typedef discard_block_engine< ranlux48_base, 389, 11 > | std::ranlux48
typedef subtract_with_carry_engine< uint_fast64_t, 48, 5, 12 > | std::ranlux48_base

## Functions
template<typename _RandomNumberEngine, size_t __w, typename _UIntType, typename _CharT, typename _Traits>
std::basic_ostream< _CharT, _Traits > & | std::operator<< (std::basic_ostream< _CharT, _Traits > &__os, const std::independent_bits_engine< _RandomNumberEngine, __w, _UIntType > &__x)

## Detailed Description

These classes define objects which provide random or pseudorandom numbers, either from a discrete or a continuous interval. The random number generator supplied as a part of this library are all uniform random number generators which provide a sequence of random number uniformly distributed over their range.

A number generator is a function object with an operator() that takes zero arguments and returns a number.

A compliant random number generator must satisfy the following requirements.

Random Number Generator Requirements
To be documented.

## Typedef Documentation

## ◆ default_random_engine

typedef minstd_rand0 std::default_random_engine

Definition at line 2337 of file random.h.

## ◆ knuth_b

typedef shuffle_order_engine<minstd_rand0, 256> std::knuth_b

Definition at line 2335 of file random.h.

## ◆ minstd_rand

typedef linear_congruential_engine<uint_fast32_t, 48271UL, 0UL, 2147483647UL> std::minstd_rand

An alternative LCR (Lehmer Generator function).

Definition at line 2295 of file random.h.

## ◆ minstd_rand0

typedef linear_congruential_engine<uint_fast32_t, 16807UL, 0UL, 2147483647UL> std::minstd_rand0

The classic Minimum Standard rand0 of Lewis, Goodman, and Miller.

Definition at line 2289 of file random.h.

## ◆ mt19937

typedef mersenne_twister_engine< uint_fast32_t, 32, 624, 397, 31, 0x9908b0dfUL, 11, 0xffffffffUL, 7, 0x9d2c5680UL, 15, 0xefc60000UL, 18, 1812433253UL> std::mt19937

The classic Mersenne Twister.

Reference: M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30.

Definition at line 2311 of file random.h.

## ◆ mt19937_64

typedef mersenne_twister_engine< uint_fast64_t, 64, 312, 156, 31, 0xb5026f5aa96619e9ULL, 29, 0x5555555555555555ULL, 17, 0x71d67fffeda60000ULL, 37, 0xfff7eee000000000ULL, 43, 6364136223846793005ULL> std::mt19937_64

An alternative Mersenne Twister.

Definition at line 2323 of file random.h.

## ◆ philox4x32

typedef philox_engine< uint_fast32_t, 32, 4, 10, 0xCD9E8D57, 0x9E3779B9, 0xD2511F53, 0xBB67AE85> std::philox4x32

32-bit four-word Philox engine.

Definition at line 2346 of file random.h.

## ◆ philox4x64

typedef philox_engine< uint_fast64_t, 64, 4, 10, 0xCA5A826395121157, 0x9E3779B97F4A7C15, 0xD2E7470EE14C6C93, 0xBB67AE8584CAA73B> std::philox4x64

64-bit four-word Philox engine.

Definition at line 2353 of file random.h.

## ◆ ranlux24

typedef discard_block_engine<ranlux24_base, 223, 23> std::ranlux24

Definition at line 2331 of file random.h.

## ◆ ranlux24_base

typedef subtract_with_carry_engine<uint_fast32_t, 24, 10, 24> std::ranlux24_base

Definition at line 2326 of file random.h.

## ◆ ranlux48

typedef discard_block_engine<ranlux48_base, 389, 11> std::ranlux48

Definition at line 2333 of file random.h.

## ◆ ranlux48_base

typedef subtract_with_carry_engine<uint_fast64_t, 48, 5, 12> std::ranlux48_base

Definition at line 2329 of file random.h.

## Function Documentation

## ◆ operator<<()

template<typename _RandomNumberEngine, size_t __w, typename _UIntType, typename _CharT, typename _Traits>

std::basic_ostream< _CharT, _Traits > & std::operator<< | ( | std::basic_ostream< _CharT, _Traits > & | __os,
|  | const std::independent_bits_engine< _RandomNumberEngine, __w, _UIntType > & | __x )

Inserts the current state of a independent_bits_engine random number generator engine `__x` into the output stream `__os`.

Parameters

  __os | An output stream.
  __x | A independent_bits_engine random number generator engine.

Returns
  The output stream with the state of `__x` inserted or in an error state.

Definition at line 65 of file random.h.