C++ 参考手册
- C++11
 - C++14
 - C++17
 - C++20
 - C++ 编译器支持情况表
 - 独立与宿主实现
 - C++ 语言
 - C++ 关键词
 - 预处理器
 - C++ 标准库头文件
 - 具名要求
 - 功能特性测试 (C++20)
 - 工具库
 - 类型支持(基本类型、RTTI、类型特性)
 - 概念库 (C++20)
 - 错误处理
 - 动态内存管理
 - 日期和时间工具
 - 字符串库
 - 容器库
 - 迭代器库
 - 范围库 (C++20)
 - 算法库
 - 数值库
 - 常用数学函数
 - 数学特殊函数
 - 伪随机数生成
 - std::uniform_random_bit_generator
 - std::linear_congruential_engine
 - std::mersenne_twister_engine
 - std::srand
 - std::rand
 - std::subtract_with_carry_engine
 - std::discard_block_engine
 - std::independent_bits_engine
 - std::shuffle_order_engine
 - std::random_device
 - std::uniform_int_distribution
 - std::uniform_real_distribution
 - std::generate_canonical
 - std::bernoulli_distribution
 - std::binomial_distribution
 - std::negative_binomial_distribution
 - std::geometric_distribution
 - std::poisson_distribution
 - std::exponential_distribution
 - std::gamma_distribution
 - std::weibull_distribution
 - std::extreme_value_distribution
 - std::normal_distribution
 - std::lognormal_distribution
 - std::chi_squared_distribution
 - std::cauchy_distribution
 - std::fisher_f_distribution
 - std::student_t_distribution
 - std::discrete_distribution
 - std::piecewise_constant_distribution
 - std::piecewise_linear_distribution
 - std::seed_seq
 - RAND_MAX
 - std::midpoint
 - std::lerp
 - std::has_single_bit
 - std::bit_ceil
 - std::bit_floor
 - std::bit_width
 - std::rotl
 - 浮点环境
 - std::complex
 - std::valarray
 - 编译时有理数算术
 - std::gcd
 - std::lcm
 - 数学常数
 - std::bit_cast
 - std::rotr
 - std::countl_zero
 - std::countl_one
 - std::countr_zero
 - std::countr_one
 - std::popcount
 - 注释
 - 输入/输出库
 - 文件系统库
 - 本地化库
 - 正则表达式库
 - 原子操作库
 - 线程支持库
 - 实验性 C++ 特性
 - 有用的资源
 - 索引
 - std 符号索引
 - 协程支持 (C++20)
 - C++ 关键词
 
std::random_device
|   定义于头文件  <random>
  | 
||
|   class random_device;  | 
(C++11 起) | |
std::random_device 是生成非确定随机数的均匀分布整数随机数生成器。
std::random_device 可以以实现定义的伪随机数引擎实现,若非确定源(例如硬件设备)对实现不可用。此情况下每个 std::random_device 对象可生成同一数值序列。
成员类型
| 成员类型 | 定义 | 
  result_type
 | 
unsigned int | 
成员函数
 构造 | |
|   构造引擎  (公开成员函数)  | |
|    operator= (被删除)  | 
  赋值运算符被删除  (公开成员函数)  | 
 生成 | |
|   推进引擎状态并返回生成的值  (公开成员函数)  | |
 特征 | |
|   获得非确定随机数生成器的熵估计  (公开成员函数)  | |
|    [静态]  | 
  获取输出范围中的最小可能值  (公开静态成员函数)  | 
|    [静态]  | 
  获取输出范围中的最大可能值  (公开静态成员函数)  | 
注解
值得注意的 std::random_device 为确定性的实现是 MinGW 的旧版本(漏洞 338 , GCC 9.2 起修复),虽然存在如 mingw-std-random_device 的替换。最新的 MinGW 版本可从 GCC with the MCF thread model 下载。
示例
运行此代码
#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 : ********************