Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Generuje losową sekwencję według liniowego algorytmu kongruentalnego.
Składnia
class linear_congruential_engine{
public: // types
typedef UIntType result_type;
// engine characteristics
static constexpr result_type multiplier = a;
static constexpr result_type increment = c;
static constexpr result_type modulus = m;
static constexpr result_type min() { return c == 0u 1u: 0u; }
static constexpr result_type max() { return m - 1u; }
static constexpr result_type default_seed = 1u;
// constructors and seeding functions
explicit linear_congruential_engine(result_type s = default_seed);
template <class Sseq>
explicit linear_congruential_engine(Sseq& q);
void seed(result_type s = default_seed);
template <class Sseq>
void seed(Sseq& q);
// generating functions
result_type operator()();
void discard(unsigned long long z);
};
Parametry
UIntType
Typ wyniku niepodpisanej liczby całkowitej. Aby uzyskać informacje o możliwych typach, zobacz losowe>.<
A
Mnożnik. Warunek wstępny: zobacz sekcję Uwagi.
C
Przyrost. Warunek wstępny: zobacz sekcję Uwagi.
M
Modulo. Warunek wstępny: Zobacz uwagi.
Elementy członkowskie
linear_congruential_engine::linear_congruential_engine
linear_congruential_engine::discard
linear_congruential_engine::max
linear_congruential_engine::min
linear_congruential_engine::operator()
linear_congruential_engine::seed
default_seed jest stałą składową zdefiniowaną jako 1u, używaną jako domyślna wartość parametru dla linear_congruential_engine::seed i konstruktora pojedynczej wartości.
Aby uzyskać więcej informacji na temat składowych aparatu, zobacz losowe>.<
Uwagi
Szablon linear_congruential_engine klasy jest najprostszym aparatem generatora, ale nie najszybszym lub najwyższym jakości. Ulepszeniem tego aparatu jest substract_with_carry_engine. Żaden z tych silników nie jest tak szybki, jak i z tak wysokiej jakości wynikami, jak mersenne_twister_engine.
Ten aparat generuje wartości typu całkowitego niepodpisanego określonego przez użytkownika przy użyciu relacji cyklu (kropka). x(i) = (A * x(i-1) + C) mod M
Jeśli M ma wartość zero, wartość użyta dla tej operacji modulu to numeric_limits<result_type>::max() + 1. Stan aparatu to ostatnia zwrócona wartość lub wartość inicjatora, jeśli nie wykonano wywołania metody operator().
Jeśli język M nie jest zerowy, wartości argumentów szablonu A i C muszą być mniejsze niż M.
Chociaż generator z tego aparatu można skonstruować bezpośrednio, można również użyć jednej z tych wstępnie zdefiniowanych definicji typów.
minstd_rand0: 1988 minimalny standardowy silnik (Lewis, Goodman i Miller, 1969).
typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;
minstd_rand: Zaktualizowano minimalny standardowy silnik minstd_rand0 (Park, Miller i Stockmeyer, 1993).
typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;
Aby uzyskać szczegółowe informacje na temat liniowego algorytmu aparatu kongruentnego, zobacz artykuł Wikipedia Linear congruential generator(Generator kongruential).
Wymagania
Nagłówek:<losowy>
Przestrzeń nazw: std