Namensräume
Varianten
Aktionen

std::linear_congruential_engine

Von cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
 
Definiert in Header <random>
template<

    class UIntType,
    UIntType a,
    UIntType c,
    UIntType m

> class linear_congruential_engine;
(seit C++11)

linear_congruential_engine ist eine Zufallszahl-Engine, die auf dem Lineargenerator (LCG) basiert.

Inhalt

[Bearbeiten] Template-Parameter

UIntType - Der vom Generator erzeugte Ergebnistyp. Das Verhalten ist undefiniert, wenn dies nicht einer der folgenden Typen ist: unsigned short, unsigned int, unsigned long oder unsigned long long.
a - der Multiplikator-Term
c - der Inkrement-Term
m - der Modulus-Term

Wenn m ungleich Null ist, und a >= m oder c >= m true ist, ist das Programm schlecht formatiert.

[Bearbeiten] Eigenschaften des Generators

Die Größe des Zustands von linear_congruential_engine ist 1 und besteht aus einer einzelnen Ganzzahl.

Der tatsächliche Modulus m0 ist wie folgt definiert:

  • Wenn m ungleich Null ist, ist m0 gleich m.
  • Wenn m Null ist, ist m0 gleich dem Wert von std::numeric_limits<result_type>::max() plus 1 (was bedeutet, dass m0 nicht als result_type darstellbar sein muss).

Der Übergangsalgorithmus von linear_congruential_engine ist TA(xi) = (a·xi+c) mod m0.

Der Generierungsalgorithmus von linear_congruential_engine ist GA(xi) = (a·xi+c) mod m0.

Die mit dem aktuellen Zustand generierte Pseudozufallszahl ist gleichzeitig der Nachfolgezustand.

[Bearbeiten] Vordefinierte Spezialisierungen

Die folgenden Spezialisierungen definieren die Zufallszahl-Engine mit zwei häufig verwendeten Parametersätzen:

Definiert in Header <random>
Typ Definition
minstd_rand0 (C++11) std::linear_congruential_engine<std::uint_fast32_t,
                                16807, 0, 2147483647>

Entdeckt 1969 von Lewis, Goodman und Miller, 1988 von Park und Miller als "Minimalstandard" übernommen[bearbeiten]

minstd_rand (C++11)

std::linear_congruential_engine<std::uint_fast32_t,
                                48271, 0, 2147483647>
Neuer "Mindeststandard", 1993 von Park, Miller und Stockmeyer empfohlen[bearbeiten]

[Bearbeiten] Verschachtelte Typen

Typ Definition
result_type UIntType

[Bearbeiten] Datenmember

constexpr UIntType multiplier
[static]
a
(öffentliche statische Member-Konstante)
constexpr UIntType increment
[static]
c
(öffentliche statische Member-Konstante)
constexpr UIntType modulus
[static]
m
(öffentliche statische Member-Konstante)
constexpr UIntType default_seed
[static]
1u
(öffentliche statische Member-Konstante)

[Bearbeiten] Memberfunktionen

Konstruktion und Initialisierung
konstruiert die Engine
(public member function) [[Bearbeiten]]
setzt den aktuellen Zustand der Engine
(public member function) [[Bearbeiten]]
Generierung
verschiebt den Zustand der Engine und gibt den generierten Wert zurück
(public member function) [[Bearbeiten]]
verschiebt den Zustand der Engine um einen angegebenen Betrag
(public member function) [[Bearbeiten]]
Eigenschaften des Generators
[static]
liefert den kleinstmöglichen Wert im Ausgabebereich
(public static member function) [[Bearbeiten]]
[static]
liefert den größtmöglichen Wert im Ausgabebereich
(public static member function) [[Bearbeiten]]

[Bearbeiten] Nicht-Member-Funktionen

(C++11)(C++11)(entfernt in C++20)
vergleicht die internen Zustände zweier Pseudozufallszahlengeneratoren
(function) [bearbeiten]
führt Stream-Ein- und -Ausgabe auf Pseudo-Zufallszahlengeneratoren durch
(function template) [edit]

[Bearbeiten] Beispiel