Класс mt19937
Класс mt19937 представляет собой генератор псевдослучайных чисел, основанный на алгоритме Mersenne Twister. Он генерирует последовательность 32-битных беззнаковых целых чисел с периодом 219937 - 1. Для получения случайного числа необходимо создать объект этого класса и вызвать оператор вызова функции operator, который не принимает параметров и возвращает следующее псевдослучайное число. Для инициализации генератора можно передать начальное значение (seed) в конструктор или использовать объект random_device для получения непредсказуемого зерна.
Синтаксис
std::mt19937 name;
std::mt19937 name(seed);
Пример
Давайте создадим генератор mt19937 с фиксированным зерном 123 и выведем несколько случайных чисел:
#include <iostream>
#include <random>
using namespace std;
int main()
{
mt19937 gen(123);
cout << gen() << endl;
cout << gen() << endl;
cout << gen() << endl;
return 0;
}
Результат выполнения кода:
128959393
1692901013
436085873
Пример
Давайте используем random_device для генерации непредсказуемого зерна и получим случайное число в диапазоне от 1 до 100 с помощью uniform_int_distribution:
#include <iostream>
#include <random>
using namespace std;
int main()
{
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<int> dist(1, 100);
cout << dist(gen) << endl;
return 0;
}
Результат выполнения кода (пример):
42
Смотрите также
-
класс
random_device,
который генерирует непредсказуемые случайные числа -
класс
uniform_int_distribution,
который задает равномерное распределение целых чисел -
класс
uniform_real_distribution,
который задает равномерное распределение вещественных чисел -
функция
rand,
которая генерирует псевдослучайное число