C++ named requirements: RandomNumberDistribution (since C++11)
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
-
Derfüllt die Anforderungen von CopyConstructible -
Derfüllt die Anforderungen von CopyAssignable
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 ;
-
d, ein Wert vom TypD -
xundy, (möglicherweise konstante) Werte vom TypD -
p, ein (möglicherweise konstanter) Wert vom TypP -
g,g1,g2, Lvalues eines Typs, der UniformRandomBitGenerator erfüllt -
os, Lvalue einer Spezialisierung von std::basic_ostream -
is, Lvalue einer Spezialisierung von std::basic_istream
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
|
(C++11)
|
erzeugt gleichmäßig verteilte ganzzahlige Werte in einem Bereich
(Klassentemplate) |
|
(C++11)
|
erzeugt gleichmäßig verteilte reelle Werte in einem Bereich
(Klassentemplate) |
|
(C++11)
|
erzeugt
bool
-Werte gemäß einer
Bernoulli-Verteilung
(Klasse) |
|
(C++11)
|
erzeugt ganzzahlige Werte gemäß einer
Binomialverteilung
(Klassen-Template) |
|
(C++11)
|
erzeugt ganzzahlige Werte gemäß einer
Negativen Binomialverteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt Ganzzahlwerte gemäß einer
Geometrischen Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt ganzzahlige Werte gemäß einer
Poisson-Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Exponentialverteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Gamma-Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Weibull-Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Extremwertverteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Standardnormalverteilung (Gaußsche Normalverteilung)
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Lognormalverteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Chi-Quadrat-Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Cauchy-Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Fisher's F-Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte gemäß einer
Student-t-Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt ganzzahlige Werte gemäß einer diskreten Verteilung
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte, die auf konstanten Teilintervallen verteilt sind
(Klassentemplate) |
|
(C++11)
|
erzeugt reelle Werte, die auf definierten Teilintervallen verteilt sind
(Klassentemplate) |