Namespaces
Variants

std::linear_congruential_engine<UIntType,a,c,m>:: linear_congruential_engine

From cppreference.net
linear_congruential_engine ( ) : linear_congruential_engine ( default_seed ) { }
(1) (seit C++11)
explicit linear_congruential_engine ( result_type value ) ;
(2) (seit C++11)
template < class SeedSeq >
explicit linear_congruential_engine ( SeedSeq & seq ) ;
(3) (seit C++11)
linear_congruential_engine ( const linear_congruential_engine & other ) ;
(4) (seit C++11)
(implizit deklariert)

Konstruiert die Pseudo-Zufallszahlen-Engine.

1) Der Standardkonstruktor.
  • Wenn die standardmäßig konstruierte Engine vom Typ std::minstd_rand0 ist, erzeugt der 10000. aufeinanderfolgende Aufruf den Wert 1043618065 .
  • Wenn die standardmäßig konstruierte Engine vom Typ std::minstd_rand ist, erzeugt der 10000. aufeinanderfolgende Aufruf den Wert 399268537 .
2) Konstruiert die Engine mit einem Seed-Wert value . Der Anfangszustand der Engine wird wie folgt bestimmt:
  • Wenn sowohl c % m == 0 als auch value % m == 0 true sind, ist der Zustand 1 .
  • Andernfalls ist der Zustand value % m .
3) Konstruiert die Engine mit einer Seed-Sequenz seq . Mit std:: size_t ( std:: log2 ( m ) / 32 ) + 1 als k wird der initiale Zustand der Engine wie folgt bestimmt:
  1. Erzeugt ein virtuelles Array-Objekt a der Länge k + 3 .
  2. Ruft seq. generate ( a + 0 , a + k + 3 ) auf.
  3. Sei S gleich (∑ k-1
    j=0
    a j+3 ·2 32j
    ) mod m
    .
  4. Falls sowohl c % m == 0 als auch S == 0 true sind, wird der Engine-Zustand auf 1 gesetzt. Andernfalls wird der Engine-Zustand auf S gesetzt.
Diese Überladung nimmt nur dann an der Überladungsauflösung teil, wenn SeedSeq die Anforderungen von SeedSequence erfüllt.
4) Der Kopierkonstruktor. Bei Konstruktion gilt, * this == other ist true .

Inhaltsverzeichnis

Parameter

value - Startwert für die Initialisierung des internen Zustands
seq - Startsequenz für die Initialisierung des internen Zustands

Komplexität

1,2) Konstante.
3) Gleich wie die Komplexität des seq.generate Aufrufs.
4) Konstante.

Exceptions

3) Wenn SeedSeq nicht std::seed_seq ist, werden die Ausnahmen ausgelöst, die durch den seq.generate -Aufruf geworfen werden.

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrektes Verhalten
LWG 2181 C++11 Überladung ( 3 ) würde nicht werfen, selbst wenn der seq.generate -Aufruf wirft leitet die Exception weiter
P0935R0 C++11 der Standardkonstruktor war explizit implizit gemacht

Siehe auch

setzt den aktuellen Zustand der Engine
(öffentliche Elementfunktion)