Namespaces
Variants

std::philox_engine<UIntType,w,n,r,consts>:: philox_engine

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

Konstruiert die Pseudo-Zufallszahlen-Engine.

1) Der Standardkonstruktor.
  • Wenn die standardmäßig konstruierte Engine vom Typ std::philox4x32 ist, erzeugt der 10000. aufeinanderfolgende Aufruf den Wert 1955073260 .
  • Wenn die standardmäßig konstruierte Engine vom Typ std::philox4x64 ist, erzeugt der 10000. aufeinanderfolgende Aufruf den Wert 3409172418970261260 .
2) Konstruiert die Engine mit einem Seed-Wert value . Der initiale Zustand der Engine wird wie folgt bestimmt: [1]
  • Alle Elemente der Sequenz X werden auf Null gesetzt.
  • Das erste Element der Sequenz K wird auf value mod 2 w
    gesetzt, die restlichen Elemente werden auf Null gesetzt.
  • Der Wert von j wird auf n - 1 gesetzt.
3) Konstruiert die Engine mit einer Seed-Sequenz seq . Der initiale Zustand der Engine wird wie folgt bestimmt: [1]
  • Alle Elemente der Sequenz X werden auf Null gesetzt.
  • Mit ( w - 1 ) / 32 + 1 als p werden die Elemente der Sequenz K durch folgende Schritte gesetzt:
  1. Erzeugt ein fiktives Array-Objekt a der Länge n / 2 * p .
  2. Ruft seq. generate ( a + 0 , a + n / 2 * p ) auf.
  3. Für jede ganze Zahl k in [ 0 , n / 2 ) setze K k auf (∑ p-1
    i=0
    a k·p+i ·2 32i
    ) mod 2 w
    .
  • Der Wert von j wird auf n - 1 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 .


  1. 1.0 1.1 Der Puffer Y wird absichtlich nicht gesetzt. Da j auf n - 1 gesetzt wird, generiert der nächste Zustandsübergang immer neue Zufallswerte und speichert sie in Y .

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.

Ausnahmen

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

Siehe auch

setzt den aktuellen Zustand der Engine
(öffentliche Elementfunktion)
setzt den aktuellen Zähler der Engine
(öffentliche Elementfunktion)