std::random_device

来自cppreference.com
< cpp‎ | numeric‎ | random
 
 
 
 
 
在标头 <random> 定义
class random_device;
(C++11 起)

std::random_device 是生成非确定随机数的均匀分布整数随机数生成器。

std::random_device 可以以实现定义的伪随机数引擎实现,若非确定源(例如硬件设备)对实现不可用。此情况下每个 std::random_device 对象可生成同一数值序列。

目录

[编辑]成员类型

成员类型 定义
result_type(C++11)unsignedint

[编辑]成员函数

构造
构造引擎
(公开成员函数)[编辑]
operator=
(弃置)(C++11)
赋值运算符被弃置
(公开成员函数)
生成
推进引擎状态并返回生成的值
(公开成员函数)[编辑]
特征
(C++11)
获得非确定随机数生成器的熵估计
(公开成员函数)[编辑]
[静态]
获取输出范围中的最小可能值
(公开静态成员函数)[编辑]
[静态]
获取输出范围中的最大可能值
(公开静态成员函数)[编辑]

[编辑]注解

在 MinGW-w64 的旧版本中,std::random_device 为确定性的实现(漏洞 338,GCC 9.2 起修复)。最新的 MinGW-w64 可从 GCC with the MCF thread model 下载。

[编辑]示例

#include <iostream>#include <map>#include <random>#include <string>   int main(){ std::random_device rd;std::map<int, int> hist;std::uniform_int_distribution<int> dist(0, 9);   for(int n =0; n !=20000;++n)++hist[dist(rd)];// 注意:仅用于演示:一旦熵池耗尽,// 许多 random_device 实现的性能就急剧下滑// 对于实践使用,random_device 通常仅用于// 播种类似 mt19937 的伪随机数生成器   for(auto[x, y]: hist)std::cout<< x <<" : "<<std::string(y /100, '*')<<'\n';}

可能的输出:

0 : ******************** 1 : ******************* 2 : ******************** 3 : ******************** 4 : ******************** 5 : ******************* 6 : ******************** 7 : ******************** 8 : ******************* 9 : ********************
close