Namespaces
Variants

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

From cppreference.net
C++ named requirements

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

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

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - C++関連の専門用語(Requirements, Notes, Standard library, Defect reports, See also)は原文のまま保持しました - HTMLタグ、属性、クラス名、ID、リンク先などは一切変更していません - 数値や書式設定も完全に保持しています

要件

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 型を要求します。

(until 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)