printSTL

printГенерация случайных чисел

Для генерации случайных чисел используются следующие классы:
  • 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); // 10 случайных цифр
loading