Namespaces
Variants
Views
Actions

std::binomial_distribution

From cppreference.com
< cpp‎ | numeric‎ | random
Revision as of 15:32, 21 February 2013 by Nate (Talk | contribs)

 
 
 
Pseudo-random number generation
Engines and engine adaptors
Generators
Distributions
Uniform distributions
Bernoulli distributions
binomial_distribution
(C++11)
Poisson distributions
Normal distributions
Sampling distributions
Seed Sequences
(C++11)
C library
 
 
Defined in header <random>
template< class IntType = int >
class binomial_distribution;
(since C++11)

Produces random non-negative integer values i, distributed according to discrete probability function:

P(i|t,p) =

t
p


· pi
· (1 − p)t−i

The value obtained is the number of successes in a sequence of t yes/no experiments, each of which succeeds with probability p.

Contents

Member types

Member type Definition
result_type IntType
param_type the type of the parameter set, unspecified

Member functions

Template:cpp/numeric/random/distribution/dcl list constructorTemplate:cpp/numeric/random/distribution/dcl list resetTemplate:cpp/numeric/random/distribution/dcl list operator()Template:cpp/numeric/random/binomial distribution/dcl list tTemplate:cpp/numeric/random/binomial distribution/dcl list pTemplate:cpp/numeric/random/distribution/dcl list paramTemplate:cpp/numeric/random/distribution/dcl list minTemplate:cpp/numeric/random/distribution/dcl list max
Generation
Characteristics

Non-member functions

Template:cpp/numeric/random/distribution/dcl list operator cmpTemplate:cpp/numeric/random/distribution/dcl list operator ltltgtgt

Example

Plot of binomial distribution with probability of success of each trial exactly 0.5, illustrating the relationship with the pascal triangle (the probabilities that none, 1, 2, 3, or all four of the 4 trials will be successful in this case are 1:4:6:4:1)

#include <iostream>
#include <iomanip>
#include <string>
#include <map>
#include <random>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    // perform 4 trials, each succeeds 1 in 2 times
    std::binomial_distribution<> d(4, 0.5);
 
    std::map<int, int> hist;
    for (int n = 0; n < 10000; ++n) {
        ++hist[d(gen)];
    }
    for (auto p : hist) {
        std::cout << p.first << ' '
                  << std::string(p.second/100, '*') << '\n';
    }
}

Possible output:

0 ******
1 ************************
2 *************************************
3 *************************
4 ******

External links

Weisstein, Eric W. "Binomial Distribution." From MathWorld--A Wolfram Web Resource.