Standard library header <random>
This header is part of the pseudo-random number generation library.
| Uniform random bit generator requirements | |
| (C++20) | specifies that a type qualifies as a uniform random bit generator (concept) | 
| Random number engines | |
| (C++11) | implements  linear congruential algorithm (class template) | 
| (C++11) | implements  Mersenne twister algorithm (class template) | 
| (C++11) | implements a subtract-with-carry ( lagged Fibonacci) algorithm (class template) | 
| Random number engine adaptors | |
| (C++11) | discards some output of a random number engine (class template) | 
| (C++11) | packs the output of a random number engine into blocks of a specified number of bits (class template) | 
| (C++11) | delivers the output of a random number engine in a different order (class template) | 
| Predefined generators | |
| minstd_rand0(C++11) | std::linear_congruential_engine<std::uint_fast32_t, 16807, 0, 2147483647> Discovered in 1969 by Lewis, Goodman and Miller, adopted as "Minimal standard" in 1988 by Park and Miller | 
| minstd_rand(C++11) | std::linear_congruential_engine<std::uint_fast32_t, 48271, 0, 2147483647> Newer "Minimum standard", recommended by Park, Miller, and Stockmeyer in 1993 | 
| mt19937(C++11) | std::mersenne_twister_engine<std::uint_fast32_t, 32, 624, 397, 31,  | 
| mt19937_64(C++11) | std::mersenne_twister_engine<std::uint_fast64_t, 64, 312, 156, 31, | 
| ranlux24_base(C++11) | std::subtract_with_carry_engine<std::uint_fast32_t, 24, 10, 24> | 
| ranlux48_base(C++11) | std::subtract_with_carry_engine<std::uint_fast64_t, 48, 5, 12> | 
| ranlux24(C++11) | std::discard_block_engine<std::ranlux24_base, 223, 23> 24-bit RANLUX generator by Martin Lüscher and Fred James, 1994 | 
| ranlux48(C++11) | std::discard_block_engine<std::ranlux48_base, 389, 11> 48-bit RANLUX generator by Martin Lüscher and Fred James, 1994 | 
| knuth_b(C++11) | std::shuffle_order_engine<std::minstd_rand0, 256> | 
| default_random_engine | implementation-defined | 
| Non-deterministic random numbers | |
| (C++11) | non-deterministic random number generator using hardware entropy source (class) | 
| Uniform distributions | |
| (C++11) | produces integer values evenly distributed across a range (class template) | 
| (C++11) | produces real values evenly distributed across a range (class template) | 
| Bernoulli distributions | |
| (C++11) | produces bool values on a  Bernoulli distribution. (class) | 
| (C++11) | produces integer values on a   binomial distribution. (class template) | 
| produces integer values on a   negative binomial distribution. (class template) | |
| (C++11) | produces integer values on a   geometric distribution. (class template) | 
| Poisson distributions | |
| (C++11) | produces integer values on a   poisson distribution. (class template) | 
| (C++11) | produces real values on an   exponential distribution. (class template) | 
| (C++11) | produces real values on an   gamma distribution. (class template) | 
| (C++11) | produces real values on a   Weibull distribution. (class template) | 
| (C++11) | produces real values on an   extreme value distribution. (class template) | 
| Normal distributions | |
| (C++11) | produces real values on a   standard normal (Gaussian) distribution. (class template) | 
| (C++11) | produces real values on a   lognormal distribution. (class template) | 
| (C++11) | produces real values on a   chi-squared distribution. (class template) | 
| (C++11) | produces real values on a   Cauchy distribution. (class template) | 
| (C++11) | produces real values on a   Fisher's F-distribution. (class template) | 
| (C++11) | produces real values on a   Student's t-distribution. (class template) | 
| Sampling distributions | |
| (C++11) | produces random integers on a discrete distribution. (class template) | 
| produces real values distributed on constant subintervals. (class template) | |
| produces real values distributed on defined subintervals. (class template) | |
| Utilities | |
| (C++11) | evenly distributes real values of given precision across [0, 1) (function template) | 
| (C++11) | general-purpose bias-eliminating scrambled seed sequence generator (class) | 
Synopsis
#include <initializer_list> namespace std { // uniform random bit generator requirements template<class G> concept UniformRandomBitGenerator = /*see below*/; // class template linear_congruential_engine template<class UIntType, UIntType a, UIntType c, UIntType m> class linear_congruential_engine; // class template mersenne_twister_engine 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; // class template subtract_with_carry_engine template<class UIntType, size_t w, size_t s, size_t r> class subtract_with_carry_engine; // class template discard_block_engine template<class Engine, size_t p, size_t r> class discard_block_engine; // class template independent_bits_engine template<class Engine, size_t w, class UIntType> class independent_bits_engine; // class template shuffle_order_engine template<class Engine, size_t k> class shuffle_order_engine; // engines and engine adaptors with predefined parameters using minstd_rand0 = /*see description*/ ; using minstd_rand = /*see description*/ ; using mt19937 = /*see description*/ ; using mt19937_64 = /*see description*/ ; using ranlux24_base = /*see description*/ ; using ranlux48_base = /*see description*/ ; using ranlux24 = /*see description*/ ; using ranlux48 = /*see description*/ ; using knuth_b = /*see description*/ ; using default_random_engine = /*see description*/ ; // class random_device class random_device; // class seed_seq class seed_seq; // function template generate_canonical template<class RealType, size_t bits, class URBG> RealType generate_canonical(URBG& g); // class template uniform_int_distribution template<class IntType = int> class uniform_int_distribution; // class template uniform_real_distribution template<class RealType = double> class uniform_real_distribution; // class bernoulli_distribution class bernoulli_distribution; // class template binomial_distribution template<class IntType = int> class binomial_distribution; // class template geometric_distribution template<class IntType = int> class geometric_distribution; // class template negative_binomial_distribution template<class IntType = int> class negative_binomial_distribution; // class template poisson_distribution template<class IntType = int> class poisson_distribution; // class template exponential_distribution template<class RealType = double> class exponential_distribution; // class template gamma_distribution template<class RealType = double> class gamma_distribution; // class template weibull_distribution template<class RealType = double> class weibull_distribution; // class template extreme_value_distribution template<class RealType = double> class extreme_value_distribution; // class template normal_distribution template<class RealType = double> class normal_distribution; // class template lognormal_distribution template<class RealType = double> class lognormal_distribution; // class template chi_squared_distribution template<class RealType = double> class chi_squared_distribution; // class template cauchy_distribution template<class RealType = double> class cauchy_distribution; // class template fisher_f_distribution template<class RealType = double> class fisher_f_distribution; // class template student_t_distribution template<class RealType = double> class student_t_distribution; // class template discrete_distribution template<class IntType = int> class discrete_distribution; // class template piecewise_constant_distribution template<class RealType = double> class piecewise_constant_distribution; // class template piecewise_linear_distribution template<class RealType = double> class piecewise_linear_distribution; }