C++ named requirements: UniformRandomBitGenerator (since C++11)
均一ランダムビット生成器は、範囲内の各値が(理想的には)等しい確率で返される符号なし整数値を返す関数オブジェクトです。
一様乱数ビット生成器は、乱数生成器として使用することを意図していません:それらは(効率のために一括生成される)ランダムビットのソースとして使用されます。任意の一様乱数ビット生成器は、任意の 乱数分布 に接続して、乱数(形式的には確率変数)を取得することができます。
目次 |
要件
型
G
は、以下の条件を満たす場合
UniformRandomBitGenerator
を満たします
|
型
|
(C++20まで) |
| 式 | 型 | 要件 |
|---|---|---|
| G :: min ( ) |
G::result_type
|
|
| G :: max ( ) |
G::result_type
|
|
| g ( ) |
G::result_type
|
|
|
以下の条件がすべて満たされること:
|
(C++20以降) |
注記
すべての RandomNumberEngine s はこの要件を満たします。
標準ライブラリ
以下の標準ライブラリ機能は、 UniformRandomBitGenerator 型を要求します。
|
(until C++17)
(C++11)
|
範囲内の要素をランダムに並べ替える
(関数テンプレート) |
|
(C++17)
|
シーケンスからN個のランダムな要素を選択する
(関数テンプレート) |
|
(C++11)
|
指定された精度の実数値を
[
0
,
1
)
に均等に分布させる
(関数テンプレート) |
|
(C++11)
|
範囲全体に均等に分布する整数値を生成する
(クラステンプレート) |
|
(C++11)
|
範囲全体に均等に分布する実数値を生成する
(クラステンプレート) |
| その他のすべての乱数分布 | |
以下の標準ライブラリ機能は、 UniformRandomBitGenerator を満たしますが、追加で RandomNumberEngine は満たしません:
|
(C++11)
|
ハードウェアエントロピーソースを使用する非決定的乱数生成器
(クラス) |
不具合報告
以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
|
LWG 2154
( P0898R3 ) |
C++11 |
G
::
min
(
)
および
G
::
max
(
)
が定数式であることが要求されるか不明確であった [1] |
要求される |
- ↑ これらの式の時間計算量要件はC++20以前では「コンパイル時」とされていました。文言は曖昧であり、「コンパイル時に評価可能」と「時間計算量がコンパイル時に決定可能」の両方の解釈が可能です。
関連項目
|
(C++20)
|
型が一様乱数ビット生成器として適格であることを指定する
(concept) |