Я немного запутался в случайной библиотеке С++ 11.
Что я понимаю: нам нужны две отдельные концепции:
- случайный движок (который может быть псевдо (нужно семя) или реальным)
- : он отображает числа, полученные от двигателя, на определенный интервал, используя конкретное распределение.
Я не понимаю, почему не просто использовать это:
std::random_device rd;
std::uniform_int_distribution<int> dist(1, 5);
// get random numbers with:
dist(rd);
Насколько я могу сказать, это хорошо работает.
Вместо этого, это то, что я нашел на большинстве примеров/сайтов/статей:
std::random_device rd;
std::mt19937 e{rd()}; // or std::default_random_engine e{rd()};
std::uniform_int_distribution<int> dist{1, 5};
// get random numbers with:
dist(e);
Я не говорю о специальном использовании, например. криптография, просто ваши основные статьи о запуске.
Мое подозрение состоит в том, что std::mt19937
(или std::default_random_engine
) принимает семя, его можно будет легче отладить, предоставив одно и то же семя во время сеанса отладки.
Кроме того, почему не просто:
std::mt19937 e{std::random_device{}()};