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

random_device::random_device

random_device::entropy

random_device::operator()

备注

该类描述了随机数的源,按 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

请参见

参考

<random>