Namespaces
Variants

C++ named requirements: RandomNumberEngine (since C++11)

From cppreference.net
C++ named requirements

Eine Zufallszahlen-Engine ist ein Funktionsobjekt, das vorzeichenlose Ganzzahlwerte zurückgibt, sodass jeder Wert im Bereich der möglichen Ergebnisse (im Idealfall) gleiche Wahrscheinlichkeit besitzt.

Jede Zufallszahlen-Engine ist auch ein UniformRandomBitGenerator und kann daher in jede Zufallszahlenverteilung eingebunden werden, um eine Zufallszahl (formal eine Zufallsvariable) zu erhalten.

Anforderungen

Ein Typ erfüllt RandomNumberEngine , wenn er UniformRandomBitGenerator erfüllt und, gegeben die folgenden Typen und Werte, die semantischen und Komplexitätsanforderungen in der nachstehenden Tabelle erfüllt sind:

Typ Definition
E ein RandomNumberEngine -Typ
T E::result_type
Wert Definition
e ein Wert vom Typ E
v ein Lvalue vom Typ E
x , y Werte vom Typ (möglicherweise const-qualifiziert) E
s ein Wert vom Typ T
q ein SeedSequence -Lvalue
z ein Wert vom Typ unsigned long long
os ein Lvalue, dessen Typ eine Spezialisierung von std::basic_ostream ist
is ein Lvalue, dessen Typ eine Spezialisierung von std::basic_istream ist
n die Größe des Zustands von E
TA der Übergangsalgorithmus von E
GA der Generierungsalgorithmus von E
Ausdruck Rückgabetyp Semantik Komplexität
E ( ) N/A Erzeugt eine Engine mit demselben Anfangszustand wie alle anderen standardmäßig konstruierten Engines vom Typ E . O(n)
E ( x ) Erzeugt eine Engine, die gleich x ist. O(n)
E ( s ) Erstellt eine Engine, deren Ausgangszustand durch s bestimmt wird. O(n)
E ( q ) Erzeugt eine Engine, deren Anfangszustand durch einen einzelnen Aufruf von q.generate bestimmt wird. identisch mit der Komplexität von q.generate aufgerufen auf einer Sequenz der Länge n
e. seed ( ) void Nachbedingung: e == E ( ) . gleich wie E ( )
e. seed ( s ) void Nachbedingung: e == E ( s ) . gleich wie E ( s )
e. seed ( q ) void Nachbedingung: e == E ( q ) . gleich wie E ( q )
e ( ) T Setzt den Zustand von e von e i auf e i+1 fort (d.h. TA ( e i ) ) und gibt GA ( e i ) zurück. amortisiert konstant
e. discard ( z ) void Setzt den Zustand von e von e i auf e i+z fort, auf eine Weise, die äquivalent zu z aufeinanderfolgenden Aufrufen von e ( ) ist. nicht schlechter als die Komplexität von z aufeinanderfolgenden Aufrufen von e ( )
x == y bool Für alle positiven ganzen Zahlen i , wenn der i -te aufeinanderfolgende Aufruf von x ( ) und y ( ) denselben Wert zurückgibt, wird true zurückgegeben. Andernfalls wird false zurückgegeben. O(n)
x ! = y bool ! ( x == y ) O(n)
os << x decltype ( os ) & Mit gesetzten fmtflags auf std:: ios_base :: dec | std:: ios_base :: left und dem Füllzeichen gesetzt auf das Leerzeichen, schreibt in os die textuelle Darstellung des aktuellen Zustands von x .

Nachbedingung: os 's fmtflags und das Füllzeichen sind dieselben wie zuvor.

O(n)
is >> v decltype ( is ) & Mit fmtflags gesetzt auf std:: ios_base :: dec , liest von is die textuelle Darstellung des aktuellen Zustands von v . Bei ungültiger Eingabe wird sichergestellt, dass der Zustand von v durch den Vorgang unverändert bleibt und is. setstate ( std:: ios_base :: failbit ) aufgerufen (was std::ios_base::failure auslösen kann).

Vorbedingung: is stellt eine textuelle Darstellung bereit, die zuvor mit einem Ausgabestream pr geschrieben wurde, der alle folgenden Bedingungen erfüllt:

  • is. getloc ( ) == pr. getloc ( ) ist true .
  • std:: is_same < decltype ( is ) :: char_type ,
    decltype ( pr ) :: char_type > :: value
    ist true .
  • std:: is_same < decltype ( is ) :: traits_type ,
    decltype ( pr ) :: traits_type > :: value
    ist true .

Nachbedingung: Die fmtflags von is sind dieselben wie zuvor.

O(n)

Standardbibliothek

Die folgenden Standardbibliothekseinrichtungen erfüllen RandomNumberEngine :

implementiert den linearen Kongruenzgenerator Algorithmus
(Klassentemplate)
implementiert den Mersenne-Twister Algorithmus
(Klassentemplate)
implementiert einen Subtract-with-Carry ( verzögerten Fibonacci ) Algorithmus
(Klassentemplate)
ein zählerbasierter parallelisierbarer Generator
(Klassentemplate)
verwirft einen Teil der Ausgabe einer Zufallszahlen-Engine
(Klassentemplate)
packt die Ausgabe einer Zufallszahlen-Engine in Blöcke mit einer bestimmten Bitanzahl
(Klassentemplate)
liefert die Ausgabe einer Zufallszahlen-Engine in einer anderen Reihenfolge
(Klassentemplate)

Die folgenden Standardbibliothekseinrichtungen erfüllen UniformRandomBitGenerator aber nicht RandomNumberEngine :

Nicht-deterministischer Zufallszahlengenerator unter Verwendung einer Hardware-Entropiequelle
(Klasse)