名前空間
変種
操作

C++ 名前付き要件: UniformRandomBitGenerator (C++11 以降)

From cppreference.com
 
 
C++ 名前付き要件
 

一様乱数ビット生成器は、符号なし整数値を返す関数オブジェクトであり、結果として考えられる範囲内の各値が(理想的には)等しい確率を持つようにします。

一様乱数ビット生成器は、乱数生成器として使用することを意図していません。これらは、乱数ビットのソースとして使用されます(効率のために一括で生成されます)。任意の一様乱数ビット生成器は、任意の乱数分布に組み込むことができ、乱数(正式には乱量)を取得できます。

目次

[編集] 要件

GUniformRandomBitGeneratorを満たすのは、

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)の範囲に一様に分布させる
(関数テンプレート) [編集]
範囲内で一様に分布する整数値を生成する
(クラステンプレート) [編集]
範囲内で一様に分布する実数値を生成する
(クラステンプレート) [編集]
その他すべての乱数分布

以下の標準ライブラリ機能は、RandomNumberEngineを追加で満たさずにUniformRandomBitGeneratorを満たします。

ハードウェアエントロピー源を使用する非決定論的乱数生成器
(クラス) [編集]

[編集] 欠陥報告

以下の動作変更を伴う欠陥報告が、以前に公開されたC++標準に遡って適用されました。

DR 適用対象 公開された動作 正しい動作
LWG 2154
(P0898R3)
C++11 G::min()G::max()が定数式である必要があるかどうかは不明確でした[1]
定数式である必要があるか[1]
必要
  1. これらの式の時間計算量要件は、C++20以前は「コンパイル時」でした。「コンパイル時の時間計算量」は「コンパイル時に評価可能」と「時間計算量がコンパイル時に決定可能」の両方に解釈できるため、この表現は曖昧です。

[編集] 関連項目

型が一様乱数ビット生成器として適格であることを指定する
(コンセプト) [編集]
English 日本語 中文(简体) 中文(繁體)