std::discrete_distribution - cppreference.com

##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::discrete_distribution

From cppreference.com
< cpp‎ | numeric‎ | random

Defined in header `<random>` |  |
template< class IntType = int > class discrete_distribution; |  | (since C++11)

`std::discrete_distribution` produces random integers on the interval `[0, n)`, where the probability of each individual integer `i` is defined as w
i/S, that is the weight of the `i`th integer divided by the sum of all `n` weights.

### [edit] Member types

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

### [edit] Member functions

(constructor) | constructs new distribution (public member function) [edit]
reset | resets the internal state of the distribution (public member function) [edit]
##### Generation
operator() | generates the next random number in the distribution (public member function) [edit]
##### Characteristics
probabilities | obtains the list of probabilities (public member function) [edit]
param | gets or sets the distribution parameter object (public member function) [edit]
min | returns the minimum potentially generated value (public member function) [edit]
max | returns the maximum potentially generated value (public member function) [edit]

### [edit] Non-member functions

operator==operator!= | compares two distribution objects (function) [edit]
operator<<operator>> | performs stream input and output on pseudo-random number distribution (function) [edit]

### [edit] Example

Run this code

    #include <iostream>
    #include <map>
    #include <random>

    int main()
    {
        std::random_device rd;
        std::mt19937 gen(rd());
        std::discrete_distribution<> d({40, 10, 10, 40});
        std::map<int, int> m;
        for(int n=0; n<10000; ++n) {
            ++m[d(gen)];
        }
        for(auto p : m) {
            std::cout << p.first << " generated " << p.second << " times\n";
        }
    }

Output:

    0 generated 4028 times
    1 generated 978 times
    2 generated 1012 times
    3 generated 3982 times

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/numeric/random/discrete_distribution&oldid=63374"