std::subtract_with_carry_engine(3) | C++ Standard Libary | std::subtract_with_carry_engine(3) |
NAME¶
std::subtract_with_carry_engine - std::subtract_with_carry_engine
Synopsis¶
Defined in header <random>
template<
class UIntType, (since C++11)
std::size_t w, std::size_t s, std::size_t r
> class subtract_with_carry_engine;
Is a random number engine that uses subtract with carry algorithm.
The state of a subtract_with_carry_engine consists of a sequence \(\small{\{
X_i\}(0
\le i <r)}\){X
i} (0 ≤ i <r), every \(\small{X_i}\)X
i is in interval \(\small{[0, 2^w)}\)[0, 2w
).
Let all subscripts applied to sequence be taken modulo r, c be the carry
value which
is either 0 or 1. The state transition is performed as follows:
* let \(\small{Y=X_{i-s}-X_{i-r}-c}\)Y=X
i-s-X
i-r-c,
* set \(\small{X_i}\)X
i to \(\small{Y \mod 2^w}\)Y mod 2w
,
* set c to 1, if \(\small{Y<0}\)Y<0, to 0 otherwise.
The following typedefs define the random number engine with two commonly used
parameter sets:
Defined in header <random>
Type Definition
ranlux24_base(C++11)
std::subtract_with_carry_engine<std::uint_fast32_t, 24, 10, 24>
ranlux48_base(C++11)
std::subtract_with_carry_engine<std::uint_fast64_t, 48, 5, 12>
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.
w - The word size, in bits, of the state sequence, 10 < w <=
std::numeric_limits<UIntType>::digits.
s - The short lag.
r - The long lag, where 0 < s < r.
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 size_t word_size template parameter w, the word size
[static] (C++11) (public static member constant)
constexpr size_t short_lag template parameter s, the short lag
[static] (C++11) (public static member constant)
constexpr size_t long_lag template parameter r, the long lag
[static] (C++11) (public static member constant)
constexpr UIntType default_seed constant value 19780503u
[static] (C++11) (public static member constant)
2022.07.31 | http://cppreference.com |