头文件

<random>

随机数
此头文件引入了随机数生成功能。

该库允许使用生成器分布的组合来产生随机数。
  • 生成器:生成均匀分布数字的对象。
  • 分布:将生成器产生的数字序列转换为遵循特定随机变量分布(例如均匀分布正态分布二项分布)的数字序列的对象。

分布对象通过其operator()成员函数来生成随机数,该成员函数接收一个生成器对象作为参数。
1
2
3
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(1,6);
int dice_roll = distribution(generator);  // generates number in the range 1..6 

为了重复使用,两者可以绑定在一起。
1
2
auto dice = std::bind ( distribution, generator );
int wisdom = dice()+dice()+dice();

除了 random_device 之外,库中定义的所有标准生成器都是随机数引擎,这是一种使用特定算法生成伪随机数序列的生成器。这些算法需要一个种子作为随机源,这个种子可以是一个单一的值,也可以是一个带有非常特定的 generate() 成员函数的对象(更多信息请参见 seed_seq)。对于简单任务,一个典型的随机源是时间,例如由 timesystem_clock::now 提供的信息(典型示例请参见 uniform_int_distribution::operator())。

作为一种替代方案,也可以使用 cstdlibrandsrand 函数来生成简单的随机数。

生成器

伪随机数引擎(模板)

使用算法根据初始种子生成伪随机数的生成器

引擎适配器

它们适配一个引擎,修改其生成数字的方式

伪随机数引擎(实例化)

生成器引擎和适配器的特定实例化

随机数生成器

非确定性随机数生成器

分布

均匀分布


与伯努利(是/否)试验相关


基于速率的分布


与正态分布相关


分段分布


其他