Defined in header <random>  

template< class UIntType, UIntType a, UIntType c, UIntType m > class linear_congruential_engine;  (since C++11) 
linear_congruential_engine
is a random number engine based on Linear congruential generator (LCG). A LCG has a state that consists of a single integer.
The transition algorithm of the LCG function is \(\small{x_{i+1}\leftarrow(a x_i + c)\mod m}\)x
i+1 ← (ax
i+c) mod m.
The following typedefs define the random number engine with two commonly used parameter sets:
Defined in header <random> 


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. 
UIntType    The result type generated by the generator. The effect is undefined if 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 
Member type  Definition 

result_type (C++11)  The integral type generated by the engine. Results are undefined if this is not an unsigned integral type. 
Construction and Seeding 

(C++11)  constructs the engine (public member function) 
(C++11)  sets the current state of the engine (public member function) 
Generation 

(C++11)  advances the engine's state and returns the generated value (public member function) 
(C++11)  advances the engine's state by a specified amount (public member function) 
Characteristics 

[static] (C++11)  gets the smallest possible value in the output range (public static member function) 
[static] (C++11)  gets the largest possible value in the output range (public static member function) 
(C++11)(C++11)(removed in C++20)  compares the internal states of two pseudorandom number engines (function) 
(C++11)  performs stream input and output on pseudorandom number engine (function template) 
constexpr UIntType multiplier
[static] (C++11)  the multiplier term (a). (public static member constant) 
constexpr UIntType increment
[static] (C++11)  the increment term (c). (public static member constant) 
constexpr UIntType modulus
[static] (C++11)  the modulus term (m). (public static member constant) 
constexpr UIntType default_seed
[static] (C++11)  the default seed (1 ). (public static member constant) 
© cppreference.com
Licensed under the Creative Commons AttributionShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/numeric/random/linear_congruential_engine