C++ named requirements: UniformRandomBitGenerator (since C++11)
Ein gleichmäßiger Zufallsbitgenerator ist ein Funktionsobjekt, das vorzeichenlose Ganzzahlwerte zurückgibt, sodass jeder Wert im Bereich der möglichen Ergebnisse (idealiter) gleiche Wahrscheinlichkeit besitzt.
Gleichmäßige Zufallsbitgeneratoren sind nicht als Zufallszahlengeneratoren gedacht: Sie werden als Quelle für Zufallsbits verwendet (die in großen Mengen erzeugt werden, um Effizienz zu gewährleisten). Jeder gleichmäßige Zufallsbitgenerator kann in jede Zufallszahlenverteilung eingefügt werden, um eine Zufallszahl (formal eine Zufallsvariable) zu erhalten.
Inhaltsverzeichnis |
Anforderungen
Der Typ
G
erfüllt die Anforderungen eines
UniformRandomBitGenerator
wenn
|
Gegeben
g
, ein Wert vom Typ
|
(bis C++20) |
| Ausdruck | Typ | Anforderungen |
|---|---|---|
| G :: min ( ) |
G::result_type
|
|
| G :: max ( ) |
G::result_type
|
|
| g ( ) |
G::result_type
|
|
|
Alle folgenden Bedingungen sind erfüllt:
|
(since C++20) |
Hinweise
Alle RandomNumberEngine s erfüllen diese Anforderung.
Standardbibliothek
Die folgenden Standardbibliothekseinrichtungen erwarten einen UniformRandomBitGenerator -Typ.
|
(bis C++17)
(C++11)
|
ordnet Elemente in einem Bereich zufällig neu an
(Funktionstemplate) |
|
(C++17)
|
wählt N zufällige Elemente aus einer Sequenz aus
(Funktionstemplate) |
|
(C++11)
|
verteilt reelle Werte gegebener Präzision gleichmäßig über
[
0
,
1
)
(Funktionstemplate) |
|
(C++11)
|
erzeugt gleichmäßig über einen Bereich verteilte ganzzahlige Werte
(Klassentemplate) |
|
(C++11)
|
erzeugt gleichmäßig über einen Bereich verteilte reelle Werte
(Klassentemplate) |
| alle anderen Zufallszahlenverteilungen | |
Die folgenden Standardbibliothekseinrichtungen erfüllen UniformRandomBitGenerator ohne zusätzlich RandomNumberEngine zu erfüllen:
|
(C++11)
|
Nicht-deterministischer Zufallszahlengenerator unter Verwendung einer Hardware-Entropiequelle
(Klasse) |
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 2154
( P0898R3 ) |
C++11 |
es war unklar, ob
G
::
min
(
)
und
G
::
max
(
)
als konstante Ausdrücke erforderlich sind [1] |
erforderlich |
- ↑ Die Zeitkomplexitätsanforderung für diese Ausdrücke war vor C++20 "compile-time". Die Formulierung ist mehrdeutig, da "compile-time time complexity" sowohl als "kann zur Compile-Zeit ausgewertet werden" als auch als "die Zeitkomplexität kann zur Compile-Zeit bestimmt werden" interpretiert werden kann.
Siehe auch
|
(C++20)
|
spezifiziert, dass ein Typ als einheitlicher Zufallsbitgenerator qualifiziert
(Konzept) |