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). 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

std::linear_congruential_engine<std::uint_fast32_t, 16807, 0,

2147483647>

minstd_rand0*(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, 48271, 0,

2147483647>

minstd_rand*(C++11)*

Newer "Minimum standard", recommended by Park, Miller, and

Stockmeyer in 1993

# 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

# Member types¶

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.

# 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)*

# Member constants¶

constexpr UIntType multiplier the multiplier term (a).

**[static]** *(C++11)* *(public static member constant)*

constexpr UIntType increment the increment term (c).

**[static]** *(C++11)* *(public static member constant)*

constexpr UIntType modulus the modulus term (m).

**[static]** *(C++11)* *(public static member constant)*

constexpr UIntType default_seed the default seed **(1)**.

**[static]** *(C++11)* *(public static member constant)*

2022.07.31 | http://cppreference.com |