我什么时候使用std :: random_device?

时间:2014-12-15 20:42:37

标签: c++ c++11 random

根据标准,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_seqsrand(time(nullptr))那么强。我是否更喜欢将它用作种子,作为引擎还是根本不用?

1 个答案:

答案 0 :(得分:14)

一般来说,std::random_device应该是您可以在平台上访问的最真实随机信息的来源。话虽这么说,访问它比std::mt19937或更慢。

正确的行为是使用std::random_device来播种std::mt19937等内容。