bernoulli_distribution-Klasse
Generiert eine Bernoulli-Verteilung.
Syntax
class bernoulli_distribution
{
public:
// types
typedef bool result_type;
struct param_type;
// constructors and reset functions
explicit bernoulli_distribution(double p = 0.5);
explicit bernoulli_distribution(const param_type& parm);
void reset();
// generating functions
template <class URNG>
result_type operator()(URNG& gen);
template <class URNG>
result_type operator()(URNG& gen, const param_type& parm);
// property functions
double p() const;
param_type param() const;
void param(const param_type& parm);
result_type min() const;
result_type max() const;
};
Parameter
URNG
Die einheitliche Zufallszahlengenerator-Engine. Mögliche Typen finden Sie unter <"zufällig>".
Hinweise
Die Klasse beschreibt eine Verteilung, die Werte vom Typ bool
produziert. Diese werden entsprechend der diskreten Wahrscheinlichkeitsfunktion zur Bernoulli-Verteilung verteilt. Die folgende Tabelle ist mit Artikeln über einzelne Member verknüpft.
bernoulli_distribution
param_type
Das Eigenschaftsmember p()
gibt den aktuell gespeicherten Verteilungsparameterwert p
zurück.
Das Eigenschaftsmember param()
gibt das aktuell gespeicherte Verteilungspaket param_type
zurück oder legt es fest.
Die min()
- und max()
-Memberfunktion gibt das jeweils kleinst- und größtmögliche Ergebnis zurück.
Die reset()
-Memberfunktion verwirft alle zwischengespeicherten Werte, damit das Ergebnis des folgenden Aufrufs von operator()
nicht von Werten abhängig ist, die vor dem Aufruf aus der Engine bezogen wurden.
Die operator()
-Memberfunktionen geben den nächsten generierten Wert von entweder dem aktuellen oder dem spezifizierten Parameterpaket zurück, das auf der URNG-Engine basiert.
Weitere Informationen zu Verteilungsklassen und ihren Mitgliedern finden Sie unter <"zufällig>".
Ausführliche Informationen über die diskrete Wahrscheinlichkeitsfunktion zur Bernoulli-Verteilung finden Sie im Wolfram MathWorld-Artikel Bernoulli Distribution.
Beispiel
// compile with: /EHsc /W4
#include <random>
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
void test(const double p, const int s) {
// uncomment to use a non-deterministic seed
// std::random_device rd;
// std::mt19937 gen(rd());
std::mt19937 gen(1729);
std::bernoulli_distribution distr(p);
std::cout << "p == " << distr.p() << std::endl;
// generate the distribution as a histogram
std::map<bool, int> histogram;
for (int i = 0; i < s; ++i) {
++histogram[distr(gen)];
}
// print results
std::cout << "Histogram for " << s << " samples:" << std::endl;
for (const auto& elem : histogram) {
std::cout << std::boolalpha << std::setw(5) << elem.first << ' ' << std::string(elem.second, ':') << std::endl;
}
std::cout << std::endl;
}
int main()
{
double p_dist = 0.5;
int samples = 100;
std::cout << "Use CTRL-Z to bypass data entry and run using default values." << std::endl;
std::cout << "Enter a double value for p distribution (where 0.0 <= p <= 1.0): ";
std::cin >> p_dist;
std::cout << "Enter an integer value for a sample count: ";
std::cin >> samples;
test(p_dist, samples);
}
Use CTRL-Z to bypass data entry and run using default values.
Enter a double value for p distribution (where 0.0 <= p <= 1.0): .45
Enter an integer value for a sample count: 100
p == 0.45
Histogram for 100 samples:
false :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
true :::::::::::::::::::::::::::::::::::::::::
Anforderungen
Header:<random>
Namespace: std
bernoulli_distribution::bernoulli_distribution
Erstellt die Verteilung.
explicit bernoulli_distribution(double p = 0.5);
explicit bernoulli_distribution(const param_type& parm);
Parameter
p
Der gespeicherte p
-Verteilungsparameter.
parm
Die für die Erstellung der Verteilung verwendete param_type
-Struktur.
Hinweise
Vorbedingung:0.0 ≤ p ≤ 1.0
Der erste Konstruktor konstruiert ein Objekt, dessen gespeicherter p
-Wert den Wert p enthält.
Mit dem zweiten Konstruktor wird ein Objekt erstellt, dessen gespeicherte Parameter aus parm initialisiert werden. Sie können die aktuellen Parameter einer vorhandenen Verteilung abrufen und festlegen, indem Sie die Memberfunktion param()
aufrufen.
bernoulli_distribution::param_type
Enthält die Parameter der Verteilung.
struktur param_type { typedef bernoulli_distribution distribution_type; param_type(double p = 0,5); double p() const;
bool operator==(const param_type& right) const; bool operator!=(const param_type& right) const; };
Parameter
p
Der gespeicherte p
-Verteilungsparameter.
Hinweise
Vorbedingung:0.0 ≤ p ≤ 1.0
Diese Struktur kann bei der Instanziierung an den Klassenkonstruktor des Verteilers, an die Memberfunktion param()
(zur Festlegung der gespeicherten Parameter einer vorhandenen Verteilung) und an operator()
(zur Verwendung anstelle der gespeicherten Parameter) übergeben werden.