bernoulli_distribution, classe
Génère une distribution de Bernoulli.
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; };
Notes
La classe décrit une distribution qui produit des valeurs de type bool, distribuées selon la fonction de probabilité discrète de distribution de Bernoulli. Le tableau suivant contient des liens vers des articles sur différents membres.
bernoulli_distribution::p |
bernoulli_distribution::param |
|
bernoulli_distribution::operator() |
Le membre de propriété p() retourne la valeur du paramètre de distribution actuellement stocké p.
Pour plus d'informations sur les classes de distribution et leurs membres, voir <random>.
Pour plus d'informations sur la fonction de probabilité discrète de distribution de Bernoulli, voir l'article de Wolfram MathWorld Bernoulli Distribution.
Exemple
// 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);
}
Sortie
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 :::::::::::::::::::::::::::::::::::::::::::::::
Configuration requise
En-tête : <random>
Espace de noms : std