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 unsigned int

[编辑] 成员函数

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

[编辑] 示例

#include <iostream>
#include <string>
#include <map>
#include <random>
 
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 的 PRNG
    }
    for (auto p : hist) {
        std::cout << p.first << " : " << std::string(p.second/100, '*') << '\n';
    }
}

可能的输出:

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