std::linear_congruential_engine - cppreference.com

From cppreference.com

template<classUIntType,UIntTypea,UIntTypec,UIntTypem>classlinear_congruential_engine;(since C++11)linear_congruential_engine is a random number engine based on

Linear congruential generator

(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

size

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

transition algorithm

of linear_congruential_engine is TA(xi) = (a·xi+c) mod m0.

The

generation algorithm

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

[edit]

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

[edit]

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

(constructor)

constructs the engine
(public member function)

[edit]

seed

sets the current state of the engine
(public member function)

[edit]

Generation

operator()

advances the engine's state and returns the generated value
(public member function)

[edit]

discard

advances the engine's state by a specified amount
(public member function)

[edit]

Characteristics

min

[static]

gets the smallest possible value in the output range
(public static member function)

[edit]

max

[static]

gets the largest possible value in the output range
(public static member function)

[edit]

Non-member functions

Example