C++ 命名要求: UniformRandomBitGenerator (C++11 起)
來自 cppreference.com
一個均勻隨機位生成器是一個函式物件,它返回無符號整數值,使得每個可能結果範圍內的值(理想情況下)具有相等的機率。
均勻隨機位生成器不打算用作隨機數生成器:它們用作隨機位的來源(為提高效率而批次生成)。任何均勻隨機位生成器都可以插入任何隨機數分佈中,以獲得一個隨機數(形式上,一個隨機變數)。
目錄 |
[編輯] 要求
型別 G
滿足 UniformRandomBitGenerator,如果
給定型別
|
(C++20 前) |
表示式 | 型別 | 要求 |
---|---|---|
G::min() | G::result_type
|
|
G::max() | G::result_type
|
|
g() | G::result_type
|
|
滿足所有以下條件:
|
(C++20 起) |
[編輯] 注意
所有 RandomNumberEngine 都滿足此要求。
[編輯] 標準庫
以下標準庫設施期望一個 UniformRandomBitGenerator 型別。
(C++17 前)(C++11) |
隨機地重排一個範圍中的元素 (函式模板) |
(C++17) |
從一個序列中選擇 N 個隨機元素 (函式模板) |
(C++11) |
均勻分佈給定精度的實值於 [ 0, 1) (函式模板) |
(C++11) |
產生在給定範圍內均勻分佈的整數值 (類模板) |
(C++11) |
產生在給定範圍內均勻分佈的實數值 (類模板) |
所有其他隨機數分佈 |
以下標準庫設施滿足 UniformRandomBitGenerator,而不需要額外滿足 RandomNumberEngine
(C++11) |
使用硬體熵源的非確定性隨機數生成器 (類) |
[編輯] 缺陷報告
下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。
缺陷報告 | 應用於 | 釋出時的行為 | 正確的行為 |
---|---|---|---|
LWG 2154 (P0898R3) |
C++11 | 不清楚 G::min() 和 G::max() 是否要求是常量表達式[1] |
需要 |
- ↑ 這些表示式的時間複雜度要求在 C++20 之前是“編譯時”。措辭含糊不清,因為“編譯時時間複雜度”可以解釋為“可以在編譯時求值”和“時間複雜度可以在編譯時確定”兩種含義。
[編輯] 另見
(C++20) |
指定型別是否符合統一隨機位生成器 (概念) |