Namespaces
Variants

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

From de.cppreference.net
C++ named requirements

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 G , sind alle folgenden Bedingungen erfüllt:

  • G::result_type ist gültig und bezeichnet einen vorzeichenlosen Ganzzahltyp.
  • Die folgenden Ausdrücke müssen gültig sein und ihre spezifizierten Effekte haben:
(bis C++20)
Ausdruck Typ Anforderungen
G :: min ( ) G::result_type
  • Liefert den kleinsten Wert, den G 's operator ( ) zurückgeben kann.
  • Der Ergebniswert ist strikt kleiner als G :: max ( ) .
  • Der Ausdruck muss ein konstanter Ausdruck sein.
G :: max ( ) G::result_type
  • Liefert den größten Wert, den G 's operator ( ) zurückgeben kann.
  • Der Ergebniswert ist strikt größer als G::min() .
  • Der Ausdruck muss ein konstanter Ausdruck sein.
g ( ) G::result_type
  • Gibt einen Wert im geschlossenen Intervall [ G :: min ( ) , G :: max ( ) ] zurück.
  • Hat amortisierte konstante Komplexität.

Alle folgenden Bedingungen sind erfüllt:

(since C++20)

Hinweise

Alle RandomNumberEngine s erfüllen diese Anforderung.

Standardbibliothek

Die folgenden Standardbibliothekskomponenten erwarten einen UniformRandomBitGenerator Typ.

(bis C++17)(C++11)
ordnet Elemente in einem Bereich zufällig um
(Funktionstemplate & Algorithmus-Funktionsobjekt)
(C++17)
wählt N zufällige Elemente aus einer Sequenz aus
(Funktionstemplate & Algorithmus-Funktionsobjekt)
verteilt reelle Werte mit gegebener Genauigkeit gleichmäßig über [0, 1)
(Funktionstemplate)
erzeugt ganzzahlige Werte, die gleichmäßig über einen Bereich verteilt sind
(Klassentemplate)
erzeugt reelle Werte, die gleichmäßig über einen Bereich verteilt sind
(Klassentemplate)
alle anderen Zufallszahlverteilungen

Die folgenden Standardbibliothekskomponenten erfüllen UniformRandomBitGenerator ohne zusätzlich RandomNumberEngine:

nichtdeterministischer 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
  1. ↑ 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

spezifiziert, dass ein Typ als einheitlicher Zufallsbitgenerator qualifiziert
(Konzept)