Генерация случайных чисел
Для генерации случайных чисел используются следующие классы:
- minstd_rand0 (default_random_engine) реализует линейный конгруэнтный метод генерации 32-битных псевдослучайных чисел;
- mt19937 и mt19937_64 реализуют более качественный метод генерации 32- и 64-битных псевдослучайных чисел с помощью вихря Мерсенна;
- ranlux24 и ranlux48 реализуют метод Фибоначчи генерации 24- и 48-битных псевдослучайных чисел;
- random_device использует системный генератор случайных чисел (не работает в MinGW).
Используя генераторы, можно получать числа с различными законами распределения:
- равномерное: uniform_int_distribution,uniform_real_distribution;
- Пуассона: poisson_distribution, exponential_distribution;
- Бернулли: bernoulli_distribution, binomial_distribution, geometric_distribution;
- нормальное: normal_distribution, lognormal_distribution, chi_squared_distribution;
- заданное образцом: discrete_distribution, piecewise_constant_distribution, piecewise_linear_distribution.
random_device rd;
mt19937 gen(rd());
uniform_int_distribution<> digit(0, 9);
for(int n=0; n<10; ++n)
cout << digit(gen); //