std::linear_congruential_engine(3) | C++ Standard Libary | std::linear_congruential_engine(3) |
NAME¶
std::linear_congruential_engine - std::linear_congruential_engine
Synopsis¶
Defined in header <random>
template<
class UIntType,
UIntType a, (since C++11)
UIntType c,
UIntType m
> class linear_congruential_engine;
linear_congruential_engine is a random number engine based on Linear
congruential
generator (LCG).
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.
a - the multiplier term
c - the increment term
m - the modulus term
When m is not zero, if a >= m or c >= m is true, the program is
ill-formed.
Generator properties
The size of the states of linear_congruential_engine is 1, each of them
consists of
a single integer.
The actual modulus \(m_0\)m
0 is defined as follows:
* If m is not zero, \(m_0\)m
0 is m.
* If m is zero, \(m_0\)m
0 is the value of std::numeric_limits<result_type>::max() plus 1 (which
means
\(m_0\)m
0 need not be representable as result_type).
The transition algorithm of linear_congruential_engine is \(TA(x_i) = (a
\cdot x_i +
c)\mod m_0\)TA(x
i) = (a·x
i+c) mod m
0.
The generation algorithm of linear_congruential_engine is \(GA(x_i) = (a
\cdot x_i +
c)\mod m_0\)GA(x
i) = (a·x
i+c) mod m
0.
The pseudo-random number generated with the current state is also the
successor
state.
Predefined specializations
The following specializations define the random number engine with two
commonly used
parameter sets:
Defined in header <random>
Type Definition
std::linear_congruential_engine<std::uint_fast32_t,
minstd_rand0 16807, 0, 2147483647>
(C++11)
Discovered in 1969 by Lewis, Goodman and Miller, adopted as "Minimal
standard" in 1988 by Park and Miller
std::linear_congruential_engine<std::uint_fast32_t,
minstd_rand 48271, 0, 2147483647>
(C++11) Newer "Minimum standard", recommended by Park,
Miller, and Stockmeyer
in 1993
Nested types
Type Definition
result_type UIntType
Data members
constexpr UIntType multiplier a
[static] (public static member constant)
constexpr UIntType increment c
[static] (public static member constant)
constexpr UIntType modulus m
[static] (public static member constant)
constexpr UIntType default_seed 1u
[static] (public static member constant)
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 generated
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)
Example¶
This section is incomplete
Reason: no example
Category:¶
* Todo no example
2024.06.10 | http://cppreference.com |