Namespaces
Variants

std:: linear_congruential_engine

From cppreference.net
Definiert im Header <random>
template <

class UIntType,
UIntType a,
UIntType c,
UIntType m

> class linear_congruential_engine ;
(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_type darstellbar 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 ,
48271 , 0 , 2147483647 >
Neuerer "Minimum-Standard", empfohlen von Park, Miller und Stockmeyer im Jahr 1993

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)
führt Stream-Eingabe und -Ausgabe für Pseudozufallszahlengeneratoren durch
(Funktionsschablone)

Beispiel