Namespaces
Variants

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

From 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 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)
verteilt reelle Werte gegebener Präzision gleichmäßig über [ 0 , 1 )
(Funktionstemplate)
erzeugt gleichmäßig über einen Bereich verteilte ganzzahlige Werte
(Klassentemplate)
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:

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
  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)