random_device 类
从外部设备生成随机序列。
class random_device { public: typedef unsigned int result_type; // cosntructor explicit random_device(const std::string& token = ""); // properties static result_type min(); static result_type max(); double entropy() const; // generate result_type operator()(); // no-copy functions random_device(const random_device&) = delete; void operator=(const random_device&) = delete; };
Members
备注
该类描述了随机数的源,按 ISO C++ 标准,允许但不要求它为非确定性的或进行安全加密。 在 Visual Studio 实现中,产生的值是非确定性的且进行了安全加密的,但是比从引擎和引擎适配器中创建的生成器运行得更慢(例如,对于大多数应用程序而言,会选择高质量且快速的引擎 mersenne_twister_engine)。
random_device 结果均匀分布在闭合范围 [0, 232) 中。
无法保证 random_device 产生非阻止调用。
通常,random_device 用于设定使用引擎或引擎适配器创建的其他生成器的种子。 有关详细信息,请参阅<random>。
示例
以下代码演示了此类的基本功能和示例结果。 由于 random_device 的非确定性本质,输出部分中所示的随机值将不会与你的结果相匹配。 这是正常情况,也是预期的情况。
// random_device_engine.cpp
// cl.exe /W4 /nologo /EHsc /MTd
#include <random>
#include <iostream>
using namespace std;
int main()
{
random_device gen;
cout << "entropy == " << gen.entropy() << endl;
cout << "min == " << gen.min() << endl;
cout << "max == " << gen.max() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
cout << "a random value == " << gen() << endl;
}
输出:
这是简化的示例,不代表此生成器的一般使用案例。 有关更具代表性的代码示例,请参阅 <random>。
要求
标头:<random>
命名空间: std