From cppreference.com
template<classUIntType,UIntTypea,UIntTypec,UIntTypem>classlinear_congruential_engine;(since C++11)linear_congruential_engine is a random number engine based on
(LCG).
Template parameters
UIntType - The result type generated by the generator. The effect is undefined if this is not one of unsignedshort, unsignedint, unsignedlong, or unsignedlonglong. 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
of the states of linear_congruential_engine is 1, each of them consists of a single integer.
The actual modulus m0 is defined as follows:
If m is not zero, m0 is m.
If m is zero, m0 is the value of std::numeric_limits<result_type>::max() plus 1 (which means m0 need not be representable as result_type).
The
of linear_congruential_engine is TA(xi) = (a·xi+c) mod m0.
The
of linear_congruential_engine is GA(xi) = (a·xi+c) mod m0.
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:
Type Definition 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
Member types
Member type Definition result_typeUIntTypeData members
constexpr UIntType multiplier
[static]
a
(public static member constant)constexpr UIntType increment
[static]
c
(public static member constant)constexpr UIntType modulus
[static]
m
(public static member constant)constexpr UIntType default_seed
[static]
1u
(public static member constant)Member functions
Construction and Seeding
constructs the engine
(public member function)
sets the current state of the engine
(public member function)
Generation
advances the engine's state and returns the generated value
(public member function)
advances the engine's state by a specified amount
(public member function)
Characteristics
[static]
gets the smallest possible value in the output range
(public static member function)
[static]
gets the largest possible value in the output range
(public static member function)
Non-member functions
Example