根据标准,std::random_device工作方式如下:
result_type operator()();返回:非确定性随机值,均匀分布在
min()和之间max().实现定义了如何生成这些值.
并且有几种方法可以使用它.播种引擎:
std::mt19937 eng(std::random_device{}());
Run Code Online (Sandbox Code Playgroud)
作为引擎本身:
std::uniform_int_distribution<> uid(1, 10);
std::cout << dist(dev);
Run Code Online (Sandbox Code Playgroud)
因为它是实现定义的,所以听起来不像说std::seed_seq或者那么强srand(time(nullptr)).我更愿意将它用作种子,作为引擎还是根本不用?
Bil*_*nch 14
一般来说,std::random_device应该是您可以在平台上访问的最真实随机信息的来源.话虽这么说,访问它比慢std::mt19937或不慢.
正确的行为是使用std::random_device种子之类的东西std::mt19937.
| 归档时间: |
|
| 查看次数: |
1856 次 |
| 最近记录: |