名稱空間
變體
操作

C++ 命名需求: RandomNumberDistribution (自 C++11 起)

來自 cppreference.com
 
 
C++ 命名要求
基本
型別屬性
全庫範圍




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
隨機數
RandomNumberDistribution(隨機數分佈)
(C++11)
併發
Ranges(範圍)
多維檢視
其他

 

一個 RandomNumberDistribution 是一個函式物件,根據機率密度函式 p(x)離散機率分佈 P(xi) 返回隨機數。

[編輯] 要求

型別 D 滿足 RandomNumberDistribution,如果

給定

  • T,由 D::result_type 命名的型別
  • P,由 D::param_type 命名的型別,它
  • 滿足 CopyConstructible
  • 滿足 CopyAssignable
  • 滿足 EqualityComparable
  • 具有與 D 的每個建構函式(接受對應於分佈引數的引數)相同的建構函式。
  • 具有與 D 的每個返回分佈引數的成員函式相同的名稱、型別和語義的成員函式
  • 宣告一個成員 typedef using distribution_type = D;

以下表達式必須有效並具有其指定的效果

表示式 型別 注意 複雜度
D::result_type T 一個算術型別 編譯時
D::param_type P 編譯時
D() 建立一個與任何其他預設構造的 D 無法區分的分佈 常量
D(p) 建立一個與直接從用於構造 p 的值構造的 D 無法區分的分佈 p 的構造相同
d.reset() void 重置分佈的內部狀態。對 d 的下一次 operator() 呼叫將不依賴於 reset() 之前任何引擎產生的值 常量
x.param() P 返回 p,使得 D(p).param() == p 不比 D(p)
d.param(p) void 後置條件: d.param() == p 不比 D(p)
d(g) T 使用相同 g 連續呼叫此函式所返回的數字序列,按照 d.param() 引數化的分佈隨機分佈 g 的平攤常數次呼叫
d(g,p) T 使用相同 g 連續呼叫此函式所返回的數字序列,按照 p 引數化的分佈隨機分佈 g 的平攤常數次呼叫
x.min() T xoperator() 可能返回的值的最大下界,由 x 引數的當前值決定 常量
x.max() T xoperator() 可能返回的值的最小上界,由 x 引數的當前值決定 常量
x == y bool 建立等價關係。如果 x.param() == y.param() 並且只要 g1 == g2,重複呼叫 x(g1)y(g2) 將生成的未來無限值序列相等,則返回 true 常量
x != y bool !(x == y) 常量
os << x os 型別的引用 將分佈引數和內部狀態的文字表示寫入 osos 的格式標誌和填充字元保持不變
is >> d is 型別的引用 is 讀取資料以恢復分佈引數和內部狀態。is 的格式標誌保持不變。資料必須使用具有相同區域設定、CharTTraits 流模板引數的流寫入,否則行為未定義。如果遇到錯誤輸入,則呼叫 is.setstate(std::ios::failbit),這可能會丟擲 std::ios_base::failure。在這種情況下,d 保持不變

[編輯] 注意

分佈物件的引數可以透過使用 d.param(p) 永久更改,或者僅在單次 operator() 呼叫期間透過使用 d(g,p) 更改。

對分佈的 const 成員函式和 os << d 的呼叫不會影響重複呼叫 d(g) 產生的數字序列。

[編輯] 標準庫

以下標準庫元件滿足 RandomNumberDistribution

產生在給定範圍內均勻分佈的整數值
(類模板) [編輯]
產生在給定範圍內均勻分佈的實數值
(類模板) [編輯]
伯努利分佈上產生 bool
(類)
根據 二項分佈 生成整數值
(類模板)
根據 負二項分佈 生成整數值
(類模板)
根據 幾何分佈 生成整數值
(類模板)
泊松分佈上產生整數值
(類模板)
根據 指數分佈 生成實數值
(類模板)
根據 伽馬分佈 生成實數值
(類模板)
根據 威布林分佈 生成實數值
(類模板)
根據 極值分佈 生成實數值
(類模板)
根據 標準正態(高斯)分佈 生成實數值
(類模板)
根據 對數正態分佈 生成實數值
(類模板)
根據 卡方分佈 生成實數值
(類模板)
根據 柯西分佈 生成實數值
(類模板)
根據 Fisher's F-分佈 生成實數值
(類模板)
根據 Student's t-分佈 生成實數值
(類模板)
在離散分佈上產生隨機整數
(類模板)
在常數子區間上生成分佈的實數值
(類模板)
在定義子區間上生成分佈的實數值
(類模板)