Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 何时使用std::random_设备?_C++_C++11_Random - Fatal编程技术网

C++ 何时使用std::random_设备?

C++ 何时使用std::random_设备?,c++,c++11,random,C++,C++11,Random,根据标准,std::random_设备的工作方式如下: 结果类型运算符() 返回:非确定性随机值,均匀分布在min()和max()之间。它是实现定义的 这些值是如何生成的 有几种方法可以使用它。要为发动机播种,请执行以下操作: std::mt19937 eng(std::random_device{}()); 作为发动机本身: std::uniform_int_distribution<> uid(1, 10); std::cout << dist(dev); std

根据标准,
std::random_设备
的工作方式如下:

结果类型运算符()

返回:非确定性随机值,均匀分布在
min()
max()
之间。它是实现定义的 这些值是如何生成的

有几种方法可以使用它。要为发动机播种,请执行以下操作:

std::mt19937 eng(std::random_device{}());
作为发动机本身:

std::uniform_int_distribution<> uid(1, 10);
std::cout << dist(dev);
std::统一内部分发uid(1,10);

std::cout一般来说,
std::random_设备
应该是您可以在平台上访问的最真实的随机信息的来源。这就是说,访问它要比std::mt19937慢得多


正确的行为是使用
std::random_device
来播种类似
std::mt19937

的内容。不幸的是,您必须小心。例如,.我会选择第一个选项,但这也取决于你想要为它播种的引擎的质量。它很可能比那些加密不强的技术更强大。例如,Visual C++可以使用。在没有指定编译器/平台的情况下,我怀疑你会得到一个有意义的答案。否则最好的答案是检查编译器的文档。因此,如果您的实现使用
/dev/random
而不是
/dev/urandom
,调用可能会阻塞,直到您补充熵池,这可能意味着您将花费大量时间晃动鼠标:)如果我没有弄错的话,
std::random\u设备
如果您试图从中获取大量数字,可能会耗尽熵。这可能会导致它阻塞,直到你移动鼠标或其他东西。应该是,但有时不是。看见