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; }