Согласно стандарту, 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)). Я предпочитаю использовать его как семя, как двигатель или не использовать вообще?