Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Generiert eine zufällige Sequenz mithilfe des linearen Kongruenzalgorithmus.
Syntax
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);
};
Parameter
UIntType
Der unsigned integer-Ergebnistyp. Mögliche Typen finden Sie unter <"zufällig>".
A
Multiplikator. Vorbedingung: Siehe Abschnitt „Hinweise“.
C
Inkrement. Vorbedingung: Siehe Abschnitt „Hinweise“.
M
Modulo. Vorbedingung: Siehe Abschnitt „Hinweise“.
Member
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 ist eine als 1u definierte Memberkonstante, die als Standardparameterwert für linear_congruential_engine::seed und den Einzelwertkonstruktor verwendet wird.
Weitere Informationen zu Modulmitgliedern finden Sie unter <"zufällig>".
Hinweise
Die linear_congruential_engine Klassenvorlage ist das einfachste Generatormodul, aber nicht die schnellste oder höchste Qualität. substract_with_carry_engine ist gegenüber diesem Modul eine Verbesserung. Keines dieser Module ist so schnell oder gibt so hochqualitative Ergebnisse zurück wie mersenne_twister_engine.
Diese Engine produziert Werte eines benutzerdefinierten Ganzzahltyps ohne Vorzeichen mithilfe der Wiederholungsrelation (period) x(i) = (A * x(i-1) + C) mod M.
Wenn M null ist, lautet numeric_limits<result_type>::max() + 1der für diesen Modulus-Vorgang verwendete Wert . Der Zustand der Engine ist der letzte zurückgegebene Wert oder der Startwert, wenn operator() nicht aufgerufen wurde.
Wenn M nicht null ist, müssen die Werte der Vorlagenargumente A und C kleiner als M sein.
Obwohl Sie direkt aus dieser Engine einen Generator konstruieren können, können Sie auch eine dieser voreingestellten Typdefinitionen verwenden.
minstd_rand0: 1988 minimal standard engine (Lewis, Goodman und Miller, 1969).
typedef linear_congruential_engine<unsigned int, 16807, 0, 2147483647> minstd_rand0;
minstd_rand: Updated minimal standard engine minstd_rand0 (Park, Miller und Stockmeyer, 1993).
typedef linear_congruential_engine<unsigned int, 48271, 0, 2147483647> minstd_rand;
Ausführliche Informationen über den Algorithmus für die lineare Kongruenz-Engine, erhalten Sie im Wikipedia-Artikel Linearer Kongruenzgenerator.
Anforderungen
Header:<random>
Namespace: std