std::linear_congruential_engine
| Definiert in Header <random> |
||
| template< class UIntType, |
(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_typedarstellbar 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 |
minstd_rand (C++11) |
std::linear_congruential_engine<std::uint_fast32_t, |
[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) |
| (C++11) |
führt Stream-Ein- und -Ausgabe auf Pseudo-Zufallszahlengeneratoren durch (function template) |
[Bearbeiten] Beispiel
| Dieser Abschnitt ist unvollständig Grund: kein Beispiel |