std:: discrete_distribution
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.
std::discrete_distribution
satisfies all requirements of
RandomNumberDistribution
.
Template parameters
IntType | - | The result type generated by the generator. The effect is undefined if this is not one of short , int , long , long long , unsigned short , unsigned int , unsigned long , or unsigned long long . |
Member types
Member type | Definition |
result_type
(C++11)
|
IntType |
param_type
(C++11)
|
the type of the parameter set, see RandomNumberDistribution . |
Member functions
(C++11)
|
constructs new distribution
(public member function) |
(C++11)
|
resets the internal state of the distribution
(public member function) |
Generation |
|
(C++11)
|
generates the next random number in the distribution
(public member function) |
Characteristics |
|
obtains the list of probabilities
(public member function) |
|
(C++11)
|
gets or sets the distribution parameter object
(public member function) |
(C++11)
|
returns the minimum potentially generated value
(public member function) |
(C++11)
|
returns the maximum potentially generated value
(public member function) |
Non-member functions
(C++11)
(C++11)
(removed in C++20)
|
compares two distribution objects
(function) |
(C++11)
|
performs stream input and output on pseudo-random number distribution
(function template) |
Example
#include <iomanip> #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> map; for (int n = 0; n < 1e4; ++n) ++map[d(gen)]; for (const auto& [num, count] : map) std::cout << num << " generated " << std::setw(4) << count << " times\n"; }
Possible output:
0 generated 4037 times 1 generated 962 times 2 generated 1030 times 3 generated 3971 times