Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.