Класс uniform_real_distribution
Класс uniform_real_distribution из заголовочного файла random
представляет собой генератор случайных чисел с равномерным
распределением. Он возвращает вещественные числа типа double
(или другого указанного типа), попадающие в заданный интервал
[a, b). В первый параметр конструктора мы передаем нижнюю
границу диапазона a, а во второй - верхнюю границу b.
Число a может быть сгенерировано, а число b - нет.
Для получения очередного случайного числа используется метод
operator, которому в качестве аргумента передается генератор.
Синтаксис
#include <random>
std::uniform_real_distribution<Type> dist(a, b);
Type value = dist(generator);
Пример
Давайте сгенерируем 5 случайных вещественных чисел
в диапазоне от 0.0 до 1.0:
#include <iostream>
#include <random>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_real_distribution<double> dist(0.0, 1.0);
for (int i = 0; i < 5; i++)
{
cout << dist(gen) << endl;
}
return 0;
}
Результат выполнения кода:
0.135477
0.835009
0.968868
0.221034
0.308167
Пример
Давайте сгенерируем случайное вещественное число в диапазоне
от -10.0 до 10.0:
#include <iostream>
#include <random>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_real_distribution<double> dist(-10.0, 10.0);
double res = dist(gen);
cout << res << endl;
return 0;
}
Результат выполнения кода:
3.72619
Пример
Давайте заполним вектор 5 случайными вещественными числами
в диапазоне от 0.0 до 100.0 и выведем их на экран:
#include <iostream>
#include <vector>
#include <random>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_real_distribution<double> dist(0.0, 100.0);
vector<double> vec;
for (int i = 0; i < 5; i++)
{
vec.push_back(dist(gen));
}
for (double el : vec)
{
cout << el << " ";
}
cout << endl;
return 0;
}
Результат выполнения кода:
42.1355 87.352 15.8089 66.4024 3.05403
Смотрите также
-
класс
uniform_int_distribution,
который генерирует равномерно распределенные целые числа -
класс
mt19937,
который представляет собой генератор псевдослучайных чисел -
класс
random_device,
который генерирует непредсказуемые случайные числа -
функция
rand,
которая возвращает псевдослучайное целое число