std::philox_engine<UIntType,w,n,r,consts>:: philox_engine
From cppreference.net
<
cpp
|
numeric
|
random
|
philox engine
|
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::philox4x32ist, erzeugt der 10000. aufeinanderfolgende Aufruf den Wert 1955073260 . -
Wenn die standardmäßig konstruierte Engine vom Typ
std::philox4x64ist, 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:
- Erzeugt ein fiktives Array-Objekt a der Länge n / 2 * p .
- Ruft seq. generate ( a + 0 , a + n / 2 * p ) auf.
-
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.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) |