根据标准,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))
那么强。我应该将其用作种子,作为引擎还是根本不使用?
std::random_device
。(请参考:https://dev59.com/ZWMk5IYBdhLWcg3w5Bzy) - Fred Larsonrandom_device
使用获取随机比特的源是由实现定义的。因此,如果您的实现使用/dev/random
而不是/dev/urandom
,则调用可能会阻塞,直到您填充熵池,这可能意味着您需要花费很多时间摇动鼠标 :) - Praetorian