Namensräume
Varianten
Aktionen

C++ benannte Anforderungen: RandomNumberDistribution (seit C++11)

Von cppreference.com
 
 
C++ benannte Anforderungen
 

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

[bearbeiten] Anforderungen

Der Typ D erfüllt die Anforderung RandomNumberDistribution, wenn

Gegeben

  • T, der Typ, der durch D::result_type benannt wird
  • P, der Typ, der durch D::param_type benannt wird, welcher
  • die Anforderung CopyConstructible erfüllt
  • die Anforderung CopyAssignable erfüllt
  • die Anforderung EqualityComparable erfüllt
  • einen Konstruktor besitzt, der identische Argumente wie die Konstruktoren von D entgegennimmt, die Argumente entsprechend den Verteilungsparametern annehmen.
  • eine Memberfunktion mit dem identischen Namen, Typ und Semantik für jede Memberfunktion von D deklariert, die einen Parameter der Verteilung zurückgibt
  • einen Member-Typedef using distribution_type = D; deklariert

Die folgenden Ausdrücke müssen gültig sein und ihre angegebenen 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 von jeder anderen Standard-konstruierten D nicht unterscheidbar ist Konstante
D(p) Erzeugt eine Verteilung, die von D, konstruiert direkt aus den Werten, die zur Konstruktion von p verwendet wurden, nicht unterscheidbar ist Wie die Konstruktion von p
d.reset() void Setzt den internen Zustand der Verteilung zurück. Der nächste Aufruf von operator() auf d wird nicht von Werten abhängen, die von einer Engine vor reset() erzeugt wurden Konstante
x.param() P Gibt p zurück, so dass 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 Sequenz von Zahlen, die von aufeinanderfolgenden Aufrufen dieses Aufrufs mit demselben g zurückgegeben werden, sind zufällig verteilt gemäß der Verteilung, die durch d.param() parametrisiert ist Amortisiert konstante Anzahl von Aufrufen von g
d(g,p) T Die Sequenz von Zahlen, die von aufeinanderfolgenden Aufrufen dieses Aufrufs mit demselben g zurückgegeben werden, sind zufällig verteilt gemäß der Verteilung, die durch p parametrisiert ist Amortisiert konstante Anzahl von Aufrufen von g
x.min() T Die größte untere Schranke für die Werte, die potenziell von x’s operator() zurückgegeben werden, bestimmt durch die aktuellen Werte der Parameter von x Konstante
x.max() T Die kleinste obere Schranke für die Werte, die potenziell von x’s operator() zurückgegeben werden, bestimmt durch die aktuellen Werte der Parameter von x Konstante
x == y bool Stellt eine Äquivalenzrelation her. Gibt true zurück, wenn x.param() == y.param() und zukünftige unendliche Sequenzen 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 Darstellung der Verteilungsparameter und des internen Zustands nach os. Die Formatierungsflags und das Füllzeichen von os bleiben unverändert
is >> d Referenz auf den Typ von is Stellt die Verteilungsparameter und den internen Zustand mit Daten wieder her, die aus is gelesen wurden. Die Formatierungsflags von is bleiben unverändert. Die Daten müssen mit einem Stream mit denselben Locale-, CharT- und Traits-Stream-Vorlagenparametern geschrieben worden sein, andernfalls ist das Verhalten undefiniert. Wenn ungültige Eingaben angetroffen werden, wird is.setstate(std::ios::failbit) aufgerufen, was std::ios_base::failure auslösen kann. d bleibt in diesem Fall unverändert

[bearbeiten] Hinweise

Die Parameter eines Verteilungsobjekts können entweder dauerhaft durch die Verwendung von d.param(p) oder nur für die Dauer eines einzelnen operator()-Aufrufs durch die Verwendung von d(g,p) geändert werden.

Aufrufe von const-Memberfunktionen der Verteilung und os << d beeinträchtigen nicht die Sequenz von Zahlen, die durch wiederholte Aufrufe von d(g) erzeugt werden.

[bearbeiten] Standardbibliothek

Die folgenden Standardbibliothekskomponenten erfüllen die Anforderung RandomNumberDistribution

erzeugt ganzzahlige Werte, die gleichmäßig über einen Bereich verteilt sind
(Klassenschablone) [bearbeiten]
erzeugt reelle Werte, die gleichmäßig über einen Bereich verteilt sind
(Klassenschablone) [bearbeiten]
erzeugt bool-Werte einer Bernoulli-Verteilung
(Klasse)
erzeugt ganzzahlige Werte nach einer Binomialverteilung
(Klassentemplate)
erzeugt ganzzahlige Werte nach einer negativen Binomialverteilung
(Klassentemplate)
erzeugt ganzzahlige Werte nach einer geometrischen Verteilung
(Klassentemplate)
erzeugt Ganzzahlwerte einer Poisson-Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer exponentiellen Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Gamma-Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Weibull-Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Extremwertverteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Standardnormalverteilung (Gauß-Verteilung)
(Klassentemplate)
erzeugt reelle Werte nach einer lognormalen Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Chi-Quadrat-Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Cauchy-Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Fisher-F-Verteilung
(Klassentemplate)
erzeugt reelle Werte nach einer Student'schen t-Verteilung
(Klassentemplate)
erzeugt Zufallsganzzahlen einer diskreten Verteilung
(Klassentemplate)
erzeugt reelle Werte, die auf konstanten Teilintervallen verteilt sind
(Klassentemplate)
erzeugt reelle Werte, die auf definierten Teilintervallen verteilt sind
(Klassentemplate)