名稱空間
變體
操作

C++ 命名要求: UniformRandomBitGenerator (C++11 起)

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




Container(容器)
容器元素
迭代器 (Iterator)
流 I/O
格式化器
(C++20)
隨機數
UniformRandomBitGenerator(均勻隨機位元生成器)
(C++11)
併發
(C++11)
Ranges
多維檢視
其他

 

一個均勻隨機位生成器是一個函式物件,它返回無符號整數值,使得每個可能結果範圍內的值(理想情況下)具有相等的機率。

均勻隨機位生成器不打算用作隨機數生成器:它們用作隨機位的來源(為提高效率而批次生成)。任何均勻隨機位生成器都可以插入任何隨機數分佈中,以獲得一個隨機數(形式上,一個隨機變數)。

目錄

[編輯] 要求

型別 G 滿足 UniformRandomBitGenerator,如果

給定型別 G 的值 g,則滿足所有以下條件:

  • G::result_type 是有效的,並表示一個無符號整數型別。
  • 以下表達式必須有效並具有其指定的效果
(C++20 前)
 表示式  型別 要求
G::min() G::result_type 
  • 產生 Goperator() 可能返回的最小值。
  • 結果值嚴格小於 G::max()
  • 表示式必須是常量表達式。
G::max() G::result_type
  • 產生 Goperator() 可能返回的最大值。
  • 結果值嚴格大於 G::min()
  • 表示式必須是常量表達式。
g() G::result_type
  • 返回閉區間 [G::min()G::max()] 中的值。
  • 具有均攤常數複雜度。

滿足所有以下條件:

(C++20 起)

[編輯] 注意

所有 RandomNumberEngine 都滿足此要求。

[編輯] 標準庫

以下標準庫設施期望一個 UniformRandomBitGenerator 型別。

(C++17 前)(C++11)
隨機地重排一個範圍中的元素
(函式模板) [編輯]
(C++17)
從一個序列中選擇 N 個隨機元素
(函式模板) [編輯]
均勻分佈給定精度的實值於 [01)
(函式模板) [編輯]
產生在給定範圍內均勻分佈的整數值
(類模板) [編輯]
產生在給定範圍內均勻分佈的實數值
(類模板) [編輯]
所有其他隨機數分佈

以下標準庫設施滿足 UniformRandomBitGenerator,而不需要額外滿足 RandomNumberEngine

使用硬體熵源的非確定性隨機數生成器
(類) [編輯]

[編輯] 缺陷報告

下列更改行為的缺陷報告追溯地應用於以前出版的 C++ 標準。

缺陷報告 應用於 釋出時的行為 正確的行為
LWG 2154
(P0898R3)
C++11 不清楚 G::min()G::max()
是否要求是常量表達式[1]
需要
  1. 這些表示式的時間複雜度要求在 C++20 之前是“編譯時”。措辭含糊不清,因為“編譯時時間複雜度”可以解釋為“可以在編譯時求值”和“時間複雜度可以在編譯時確定”兩種含義。

[編輯] 另見

指定型別是否符合統一隨機位生成器
(概念) [編輯]