Namespaces
Variants

C++ named requirements: UniformRandomBitGenerator (since C++11)

From ja.cppreference.net
C++ named requirements

均一ランダムビット生成器は、範囲内の各値が(理想的には)等しい確率で返される符号なし整数値を返す関数オブジェクトです。

一様乱数ビット生成器は、乱数生成器として使用することを意図していません:それらは(効率のために一括生成される)ランダムビットのソースとして使用されます。任意の一様乱数ビット生成器は、任意の 乱数分布 に接続して、乱数(形式的には確率変数)を取得することができます。

目次

要件

型 G は、以下の条件を満たす場合 UniformRandomBitGenerator を満たします

型 G の値 g が与えられたとき、以下の全ての条件が満たされること:

  • G::result_type が有効であり、符号なし整数型を表すこと。
  • 以下の式が有効であり、指定された効果を持つこと:
(C++20まで)
式 型 要件
G :: min ( ) G::result_type
  • Gの operator ( ) が返しうる最小値を返す。
  • 結果の値は G :: max ( ) より厳密に小さい。
  • この式は定数式でなければならない。
G :: max ( ) G::result_type
  • Gの operator ( ) が返しうる最大値を返す。
  • 結果の値は G::min() より厳密に大きい。
  • この式は定数式でなければならない。
g ( ) G::result_type
  • 閉区間 [ G :: min ( ) , G :: max ( ) ] 内の値を返す。
  • 償却定数時間の計算量を持つ。

以下の条件がすべて満たされること:

(C++20以降)

注記

すべての RandomNumberEngine s はこの要件を満たします。

標準ライブラリ

次の標準ライブラリ機能は UniformRandomBitGenerator 型を必要とします。

(C++17まで)(C++11)
範囲内の要素をランダムに並べ替える
(関数テンプレート & アルゴリズム関数オブジェクト)
(C++17)
シーケンスからN個のランダムな要素を選択する
(関数テンプレート & アルゴリズム関数オブジェクト)
与えられた精度の実数値を [0, 1)
(関数テンプレート)
整数値を、ある範囲にわたって均等に分布させる
(クラステンプレート)
実数値を、ある範囲にわたって均等に分布させる
(クラステンプレート)
その他すべての乱数分布

次の標準ライブラリ機能は UniformRandomBitGenerator を満たすが、RandomNumberEngine:

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

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

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

関連項目

型が一様乱数ビット生成器として適格であることを指定する
(concept)