С++ 11 представил заголовок <random>
с объявлениями для двигателей случайных чисел и случайных распределений. Это прекрасное время для замены тех видов использования rand()
, которое часто бывает проблематичным по-разному. Однако кажется очевидным, как заменить
srand(n);
// ...
int r = rand();
Основываясь на объявлениях, кажется, что равномерное распределение может быть построено примерно так:
std::default_random_engine engine;
engine.seed(n);
std::uniform_int_distribution<> distribution;
auto rand = [&](){ return distribution(engine); }
Этот подход кажется довольно вовлеченным и, безусловно, я не буду помнить, в отличие от использования srand()
и rand()
. Я знаю N4531, но даже это все еще кажется довольно привлекательным.
Существует ли простой способ заменить srand()
и rand()
?