Namespaces
Variants

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

From cppreference.net
C++ named requirements

Eine RandomNumberDistribution ist ein Funktionsobjekt, das Zufallszahlen gemäß einer Wahrscheinlichkeitsdichtefunktion p(x) oder einer diskreten Wahrscheinlichkeitsverteilung P(x i ) zurückgibt.

Anforderungen

Der Typ D erfüllt die Anforderungen von RandomNumberDistribution wenn

Gegeben

  • T , der Typ, der durch D :: result_type benannt wird
  • P , der Typ, der durch D :: param_type benannt wird, welcher
  • erfüllt CopyConstructible
  • erfüllt CopyAssignable
  • erfüllt EqualityComparable
  • besitzt einen Konstruktor mit identischen Argumenten wie jeder Konstruktor von D , der Argumente entsprechend den Verteilungsparametern annimmt
  • besitzt eine Memberfunktion mit identischem Namen, Typ und Semantik wie jede Memberfunktion von D , die einen Parameter der Verteilung zurückgibt
  • deklariert einen Member-Typedef using distribution_type = D ;

Die folgenden Ausdrücke müssen gültig sein und ihre spezifizierten Effekte haben

Ausdruck Typ Anmerkungen Komplexität
D::result_type T Ein arithmetischer Typ Kompilierzeit
D::param_type P Kompilierzeit
D() Erzeugt eine Verteilung, die nicht von anderen standardkonstruierten D unterscheidbar ist Konstante
D(p) Erzeugt eine Verteilung, die nicht von D unterscheidbar ist, das direkt aus den Werten konstruiert wurde, die zur Konstruktion von p verwendet wurden Gleich wie die Konstruktion von p
d.reset() void Setzt den internen Zustand der Verteilung zurück. Der nächste Aufruf von operator() auf d hängt nicht von Werten ab, die vor reset() von einer Engine erzeugt wurden Konstante
x.param() P Gibt p zurück, sodass D ( p ) . param ( ) == p Nicht schlechter als D(p)
d.param(p) void Nachbedingung: d. param ( ) == p Nicht schlechter als D(p)
d(g) T Die Folge von Zahlen, die durch aufeinanderfolgende Aufrufe mit demselben g zurückgegeben werden, ist gemäß der durch d.param() parametrisierten Verteilung zufällig verteilt Amortisierte konstante Anzahl von Aufrufen von g
d(g,p) T Die Folge von Zahlen, die durch aufeinanderfolgende Aufrufe mit demselben g zurückgegeben werden, ist gemäß der durch p parametrisierten Verteilung zufällig verteilt Amortisierte konstante Anzahl von Aufrufen von g
x.min() T Die größte untere Schranke für die Werte, die potentiell durch x ’s operator() zurückgegeben werden können, bestimmt durch die aktuellen Werte von x ’s Parametern Konstante
x.max() T Die kleinste obere Schranke für die Werte, die potentiell durch x ’s operator() zurückgegeben werden können, bestimmt durch die aktuellen Werte von x ’s Parametern Konstante
x == y bool Stellt eine Äquivalenzrelation her. Gibt true zurück, wenn x. param ( ) == y. param ( ) und zukünftige unendliche Folgen von Werten, die durch wiederholte Aufrufe von x ( g1 ) und y ( g2 ) erzeugt würden, gleich wären, solange g1 == g2 Konstante
x != y bool !(x == y) Konstante
os << x Referenz auf den Typ von os Schreibt eine textuelle Repräsentation der Verteilungsparameter und des internen Zustands in os . Die Formatierungsflags und Füllzeichen von os bleiben unverändert
is >> d Referenz auf den Typ von is Stellt die Verteilungsparameter und den internen Zustand mit Daten aus is wieder her. Die Formatierungsflags von is bleiben unverändert. Die Daten müssen mit einem Stream mit derselben Locale, CharT und Traits Stream-Template-Parametern geschrieben worden sein, andernfalls ist das Verhalten undefiniert. Bei fehlerhafter Eingabe wird is. setstate ( std :: ios :: failbit ) aufgerufen, was std::ios_base::failure werfen kann. d bleibt in diesem Fall unverändert

Hinweise

Die Parameter eines Verteilungs-Objekts können entweder dauerhaft geändert werden, indem d. param ( p ) verwendet wird, oder nur für die Dauer eines einzelnen operator()-Aufrufs, indem d ( g,p ) verwendet wird.

Aufrufe von const-Memberfunktionen der Verteilung und os << d beeinflussen nicht die Zahlenfolge, die durch wiederholte d ( g ) erzeugt wird.

Standardbibliothek

Die folgenden Standardbibliothek-Komponenten erfüllen die Anforderungen von RandomNumberDistribution

erzeugt gleichmäßig verteilte ganzzahlige Werte in einem Bereich
(Klassentemplate)
erzeugt gleichmäßig verteilte reelle Werte in einem Bereich
(Klassentemplate)
erzeugt bool -Werte gemäß einer Bernoulli-Verteilung
(Klasse)
erzeugt ganzzahlige Werte gemäß einer Binomialverteilung
(Klassen-Template)
erzeugt ganzzahlige Werte gemäß einer Negativen Binomialverteilung
(Klassentemplate)
erzeugt Ganzzahlwerte gemäß einer Geometrischen Verteilung
(Klassentemplate)
erzeugt ganzzahlige Werte gemäß einer Poisson-Verteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Exponentialverteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Gamma-Verteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Weibull-Verteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Extremwertverteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Standardnormalverteilung (Gaußsche Normalverteilung)
(Klassentemplate)
erzeugt reelle Werte gemäß einer Lognormalverteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Chi-Quadrat-Verteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Cauchy-Verteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Fisher's F-Verteilung
(Klassentemplate)
erzeugt reelle Werte gemäß einer Student-t-Verteilung
(Klassentemplate)
erzeugt ganzzahlige Werte gemäß einer diskreten Verteilung
(Klassentemplate)
erzeugt reelle Werte, die auf konstanten Teilintervallen verteilt sind
(Klassentemplate)
erzeugt reelle Werte, die auf definierten Teilintervallen verteilt sind
(Klassentemplate)