8. Сначала попробуем распределения uniform_int_distribution
normal_distribution
. Они используются в большинстве случаев, когда нужно применить генератор случайных чисел. Все, кто когда-то изучал стохастику в университете, скорее всего, слышали о них. Равномерное распределение принимает два значения, указывая нижнюю и верхнюю границы диапазона, в котором будут распределены случайные значения. Выбрав 0
и 9
, мы получим одинаково часто встречающиеся значения между 0
и 9
(включительно). Нормальное распределение принимает в качестве аргументов cout << "uniform_int_distribution\n";
print_distro(uniform_int_distribution
cout << "normal_distribution\n";
print_distro(normal_distribution
9. Еще одним очень интересным распределением является piecewise_constant_distribution
0
, 5
, 10
, 30
, получим три интервала, простирающиеся от 0
до 4
, от 5
до 9
и от 10
до 29
. Еще один входной диапазон определяет веса входных диапазонов. Установив значения этих весов равными 0.2
, 0.3
, 0.5
, мы укажем, что из соответствующих интервалов случайные числа будут получены с вероятностями 20, 30 и 50%. Внутри каждого из интервалов значения будут иметь одинаковую вероятность выпадения. initializer_list
initializer_list
cout << "piecewise_constant_distribution\n";
print_distro(
piecewise_constant_distribution
begin(intervals), end(intervals),
begin(weights)},
samples);
10. Распределение piecewise_linear_distribution
cout << "piecewise_linear_distribution\n";
initializer_list
print_distro(
piecewise_linear_distribution
begin(intervals), end(intervals), begin(weights2)},
samples);
11. Распределение Бернулли — это еще одно важное распределение, поскольку распределяет лишь значения
0
и 1
. Еще одним интересным распределением, полезным во многих случаях, является discrete_distribution
. В нашем случае инициализируем его дискретными значениями 1
, 2
, 4
, 8
. Они интерпретируются как веса для возможных выходных значений от 0
до 3
. cout << "bernoulli_distribution\n";
print_distro(std::bernoulli_distribution{0.75}, samples);
cout << "discrete_distribution\n";
print_distro(discrete_distribution
12. Существует множество других генераторов распределений. Они полезны только в очень специфических ситуациях. Если вы никогда о них не слышали, то они,
cout << "binomial_distribution\n";
print_distro(binomial_distribution
cout << "negative_binomial_distribution\n";
print_distro(
negative_binomial_distribution{10, 0.8}, samples);
cout << "geometric_distribution\n";
print_distro(geometric_distribution
cout << "exponential_distribution\n";
print_distro(exponential_distribution
cout << "gamma_distribution\n";
print_distro(gamma_distribution