Delen via


bernoulli_distribution-klasse

Hiermee wordt een Bernoulli-distributie gegenereerd.

Syntaxis

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;
};

Parameterwaarden

URNG
De generatorengine voor uniforme willekeurige getallen. Zie <willekeurig> voor mogelijke typen.

Opmerkingen

De klasse beschrijft een verdeling die waarden van het type boolproduceert, verdeeld volgens de bernoulli-verdeling discrete waarschijnlijkheidsfunctie. De volgende tabel bevat koppelingen naar artikelen over afzonderlijke leden.

bernoulli_distribution
param_type

Het eigenschapslid p() retourneert de momenteel opgeslagen distributieparameterwaarde p.

Het eigenschapslid param() stelt het opgeslagen distributieparameterpakket in of retourneert het param_type opgeslagen distributieparameterpakket.

De min() functies en max() leden retourneren respectievelijk het kleinste mogelijke resultaat en het grootst mogelijke resultaat.

De reset() lidfunctie negeert alle waarden in de cache, zodat het resultaat van de volgende aanroep operator() niet afhankelijk is van waarden die zijn verkregen van de engine vóór de aanroep.

De operator() lidfuncties retourneren de volgende gegenereerde waarde op basis van de URNG-engine, ofwel uit het huidige parameterpakket, of het opgegeven parameterpakket.

Zie willekeurig voor meer informatie over distributieklassen en hun leden<.>

Zie het artikel Bernoulli Distribution voor gedetailleerde informatie over de discrete waarschijnlijkheidsfunctie van Bernoulli-verdeling in Wolfram MathWorld.

Voorbeeld

// 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 :::::::::::::::::::::::::::::::::::::::::

Behoeften

Rubriek:<willekeurig>

naamruimte: std

bernoulli_distribution::bernoulli_distribution

Hiermee wordt de verdeling samengesteld.

explicit bernoulli_distribution(double p = 0.5);
explicit bernoulli_distribution(const param_type& parm);

Parameterwaarden

p
De opgeslagen p distributieparameter.

parm
De param_type structuur die wordt gebruikt om de distributie samen te stellen.

Opmerkingen

Voorwaarde:0.0 ≤ p ≤ 1.0

De eerste constructor bouwt een object waarvan de opgeslagen p waarde de waarde p bevat.

De tweede constructor bouwt een object waarvan de opgeslagen parameters worden geïnitialiseerd vanuit parm. U kunt de huidige parameters van een bestaande distributie verkrijgen en instellen door de param() lidfunctie aan te roepen.

bernoulli_distribution::p aram_type

Bevat de parameters van de distributie.

struct 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;
   };

Parameterwaarden

p
De opgeslagen p distributieparameter.

Opmerkingen

Voorwaarde:0.0 ≤ p ≤ 1.0

Deze structuur kan worden doorgegeven aan de klasseconstructor van de distributie tijdens instantiëring, aan de param() lidfunctie om de opgeslagen parameters van een bestaande distributie in te stellen en te operator() worden gebruikt in plaats van de opgeslagen parameters.

Zie ook

<willekeurig>