標頭檔案

<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 函式來生成簡單的隨機數。

生成器

偽隨機數引擎(模板)

使用演算法根據初始種子生成偽隨機數的生成器

引擎介面卡

它們適配一個引擎,修改其生成數字的方式

偽隨機數引擎(例項化)

生成器引擎和介面卡的特定例項化

隨機數生成器

非確定性隨機數生成器

分佈

均勻分佈


與伯努利(是/否)試驗相關


基於速率的分佈


與正態分佈相關


分段分佈


其他