Reference

<random>

class template
<random>

std::binomial_distribution

template <class IntType = int> class binomial_distribution;
Binomial distribution
Random number distribution that produces integers according to a binomial discrete distribution, which is described by the following probability mass function:



This distribution produces random integers in the range [0,t], where each value represents the number of successes in a sequence of t trials (each with a probability of success equal to p).

The distribution parameters, t and p, are set on construction.

To produce a random value following this distribution, call its member function operator().

Template parameters

IntType
An integer type. Aliased as member type result_type.
By default, this is int.

Member types

The following aliases are member types of binomial_distribution:

member typedefinitionnotes
result_typeThe first template parameter (IntType)The type of the numbers generated (defaults to int)
param_typenot specifiedThe type returned by member param.

Member functions

(constructor)
Construct binomial distribution (public member function)
operator()
Generate random number (public member function)
reset
Reset distribution (public member function)
param
Distribution parameters (public member function)
min
Minimum value (public member function)
max
Maximum value (public member function)

Distribution parameters

t
Upper bound of range (public member function)
p
Probability of success (public member function)

Non-member functions

operator<<
Insert into output stream (function template)
>/">operator>>
Extract from input stream (function template)
relational operators
Relational operators (function template)

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// binomial_distribution
#include <iostream>
#include <random>
int main()
{
 const int nrolls = 10000; // number of experiments
 const int nstars = 100; // maximum number of stars to distribute
 std::default_random_engine generator;
 std::binomial_distribution<int> distribution(9,0.5);
 int p[10]={};
 for (int i=0; i<nrolls; ++i) {
 int number = distribution(generator);
 ++p[number];
 }
 std::cout << "binomial_distribution (9,0.5):" << std::endl;
 for (int i=0; i<10; ++i)
 std::cout << i << ": " << std::string(p[i]*nstars/nrolls,'*') << std::endl;
 return 0;
}

Possible output:
binomial_distribution (9,0.5):
0: 
1: *
2: ******
3: ****************
4: *************************
5: ************************
6: *****************
7: *****
8: *
9: 


See also

uniform_int_distribution
Uniform discrete distribution (class template)
bernoulli_distribution
Bernoulli distribution (class)
negative_binomial_distribution
Negative binomial distribution (class template)

AltStyle によって変換されたページ (->オリジナル) /