std:: linear_congruential_engine
|
Definiert im Header
<random>
|
||
|
template
<
class
UIntType,
|
(seit C++11) | |
linear_congruential_engine
ist eine Zufallszahlen-Engine basierend auf dem
Linear Congruential Generator
(LCG).
Inhaltsverzeichnis |
Template-Parameter
| UIntType | - | Der vom Generator erzeugte Ergebnistyp. Das Verhalten ist undefiniert, falls dies nicht einer der folgenden Typen ist: unsigned short , unsigned int , unsigned long , oder unsigned long long . |
| a | - | der Multiplikatorterm |
| c | - | der Inkrementterm |
| m | - | der Modulusterm |
Wenn m nicht null ist, und a >= m oder c >= m true ist, ist das Programm fehlerhaft.
Generatoreigenschaften
Die
Größe
der Zustände von
linear_congruential_engine
ist
1
, jeder davon besteht aus einer einzelnen Ganzzahl.
Der tatsächliche Modulus m 0 ist wie folgt definiert:
- Wenn m nicht null ist, m 0 gleich m ist.
-
Wenn
m
null ist,
m
0
dem Wert von
std::
numeric_limits
<
result_type
>
::
max
(
)
plus
1
entspricht (was bedeutet, dass
m
0
nicht als
result_typedarstellbar sein muss).
Der
Übergangsalgorithmus
von
linear_congruential_engine
ist
TA(x
i
) = (a·x
i
+c) mod m
0
.
Der
Generierungsalgorithmus
von
linear_congruential_engine
ist
GA(x
i
) = (a·x
i
+c) mod m
0
.
Die mit dem aktuellen Zustand generierte Pseudozufallszahl ist auch der Nachfolgezustand.
Vordefinierte Spezialisierungen
Die folgenden Spezialisierungen definieren die Zufallszahlen-Engine mit zwei häufig verwendeten Parametersätzen:
|
Definiert im Header
<random>
|
|
| Typ | Definition |
minstd_rand0
(C++11)
|
std
::
linear_congruential_engine
<
std::
uint_fast32_t
,
16807
,
0
,
2147483647
>
1969 von Lewis, Goodman und Miller entdeckt, 1988 von Park und Miller als "Minimalstandard" übernommen |
minstd_rand
(C++11)
|
std
::
linear_congruential_engine
<
std::
uint_fast32_t
,
|
Verschachtelte Typen
| Typ | Definition |
result_type
|
UIntType
|
Datenmitglieder
|
constexpr UIntType
Multiplikator
[static]
|
a
(öffentliche statische Memberkonstante) |
|
constexpr UIntType
Inkrement
[static]
|
c
(öffentliche statische Memberkonstante) |
|
constexpr UIntType
Modulus
[static]
|
m
(öffentliche statische Memberkonstante) |
|
constexpr UIntType
Standardstartwert
[static]
|
1u
(öffentliche statische Memberkonstante) |
Memberfunktionen
Konstruktion und Initialisierung |
|
|
konstruiert die Engine
(öffentliche Elementfunktion) |
|
|
setzt den aktuellen Zustand der Engine
(öffentliche Elementfunktion) |
|
Generierung |
|
|
bewegt den Zustand der Engine vor und gibt den generierten Wert zurück
(öffentliche Elementfunktion) |
|
|
bewegt den Zustand der Engine um einen bestimmten Betrag vor
(öffentliche Elementfunktion) |
|
Eigenschaften |
|
|
[static]
|
ermittelt den kleinstmöglichen Wert im Ausgabebereich
(öffentliche statische Elementfunktion) |
|
[static]
|
ermittelt den größtmöglichen Wert im Ausgabebereich
(öffentliche statische Elementfunktion) |
Nicht-Member-Funktionen
|
(C++11)
(C++11)
(entfernt in C++20)
|
vergleicht die internen Zustände zweier Pseudozufallszahlengeneratoren
(Funktion) |
|
(C++11)
|
führt Stream-Eingabe und -Ausgabe für Pseudozufallszahlengeneratoren durch
(Funktionsschablone) |
Beispiel
|
Dieser Abschnitt ist unvollständig
Grund: kein Beispiel |