C++ 名前付き要件: UniformRandomBitGenerator (C++11 以降)
From 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) |
範囲内で一様に分布する実数値を生成する (クラステンプレート) |
| その他すべての乱数分布 | |
以下の標準ライブラリ機能は、RandomNumberEngineを追加で満たさずにUniformRandomBitGeneratorを満たします。
| (C++11) |
ハードウェアエントロピー源を使用する非決定論的乱数生成器 (クラス) |
[編集] 欠陥報告
以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。
| DR | 適用対象 | 公開された動作 | 正しい動作 |
|---|---|---|---|
| LWG 2154 (P0898R3) |
C++11 | G::min()とG::max()が定数式である必要があるかどうかは不明確でした[1] 定数式である必要があるか[1] |
必要 |
- ↑ これらの式の時間計算量要件は、C++20以前は「コンパイル時」でした。「コンパイル時の時間計算量」は「コンパイル時に評価可能」と「時間計算量がコンパイル時に決定可能」の両方に解釈できるため、この表現は曖昧です。
[編集] 関連項目
| (C++20) |
型が一様乱数ビット生成器として適格であることを指定する (コンセプト) |