Класс uniform_int_distribution
Класс uniform_int_distribution из заголовка random предназначен для генерации случайных целых чисел, которые равномерно распределены на заданном отрезке. Это означает, что каждое число из указанного диапазона имеет одинаковую вероятность выпадения. В первом параметре конструктора мы передаём начало диапазона, а во втором - конец диапазона (оба включительно). Для получения самого числа используется оператор вызова operator, которому в качестве аргумента передаётся генератор случайных чисел, например mt19937.
Синтаксис
#include <random>
uniform_int_distribution<int> dist(min, max);
dist(gen)
Пример
Давайте сгенерируем 5 случайных целых чисел в диапазоне от 1 до 10:
#include <iostream>
#include <random>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> dist(1, 10);
for (int i = 0; i < 5; i++) {
cout << dist(gen) << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
3 7 1 10 5
Пример
Давайте сгенерируем случайное число в диапазоне от 0 до 100 и выведем его:
#include <iostream>
#include <random>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> dist(0, 100);
int res = dist(gen);
cout << res << endl;
return 0;
}
Результат выполнения кода:
42
Смотрите также
-
класс
uniform_real_distribution,
который генерирует случайные вещественные числа -
класс
mt19937,
который является генератором случайных чисел -
класс
random_device,
который используется для получения случайного зерна -
функция
rand,
которая генерирует псевдослучайные числа