Согласно стандарту, std::random_device
работает следующим образом:
result_type operator()();
Возвращает: недетерминированное случайное значение, равномерно распределенное между
min()
иmax()
, включительно. Это определяется реализацией как эти значения генерируются.
И есть несколько способов использовать его. Чтобы посеять двигатель:
std::mt19937 eng(std::random_device{}());
Как двигатель сам по себе:
std::uniform_int_distribution<> uid(1, 10);
std::cout << dist(dev);
Поскольку он определяется реализацией, он звучит не так сильно, как, скажем, std::seed_seq
или srand(time(nullptr))
. Я предпочитаю использовать его как семя, как двигатель или не использовать вообще?