std::linear_congruential_engine<UIntType,a,c,m>::linear_congruential_engine
From cppreference.com
linear_congruential_engine() : linear_congruential_engine(default_seed) {}
|
(1) | (since C++11) |
explicit linear_congruential_engine( result_type value );
|
(2) | (since C++11) |
template< class SeedSeq >
explicit linear_congruential_engine( SeedSeq& seq );
|
(3) | (since C++11) |
linear_congruential_engine( const linear_congruential_engine& other );
|
(4) | (since C++11) (implicitly declared) |
Constructs the pseudo-random number engine.
1) The default constructor.
- If the default-constructed engine is of type
std::minstd_rand0, the 10000th consecutive invocation of it produces the value1043618065. - If the default-constructed engine is of type
std::minstd_rand, the 10000th consecutive invocation of it produces the value399268537.
2) Constructs the engine with a seed value
value. The engine's initial state is determined as follows:
- If
c % m == 0andvalue % m == 0are bothtrue, the state is1. - Otherwise, the state is
value % m.
3) Constructs the engine with a seed sequence
seq. Given std::size_t(std::log2(m) / 32) + 1 as k, the engine's initial state is determined as follows:
- Creates an invented array object
aof lengthk + 3. - Calls
seq.generate(a + 0, a + k + 3). - Let
Sbe (∑k-1
j=0 aj+3·232j
) mod m. - If both
c % m == 0andS == 0aretrue, sets the engine's state to1. Otherwise, sets the engine’s state toS.
This overload participates in overload resolution only if
SeedSeq meets the requirements of SeedSequence.4) The copy constructor. Upon construction,
*this == other is true.Parameters
| value | - | seed value to use in the initialization of the internal state |
| seq | - | seed sequence to use in the initialization of the internal state |
Complexity
1,2) Constant.
3) Same as the complexity of the
seq.generate call.4) Constant.
Exceptions
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 2181 | C++11 | overload (3) would not throw even if the seq.generate call throws
|
propagates the exception |
| P0935R0 | C++11 | the default constructor was explicit | made implicit |
See also
| sets the current state of the engine (public member function) |