Namespaces
Variants

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

From cppreference.net
C++ named requirements

乱数エンジンは、符号なし整数値を返す関数オブジェクトであり、可能な結果の範囲内の各値が(理想的には)等しい確率で得られるように設計されています。

任意の乱数エンジンはまた UniformRandomBitGenerator でもあり、したがって任意の 乱数分布 に組み込むことで乱数(形式的には確率変数)を得ることができます。

要件

型が RandomNumberEngine を満たすのは、それが UniformRandomBitGenerator を満たし、かつ以下の型と値が与えられた場合に、下記の表における意味論的および計算量の要件が満たされるときです:

定義
E RandomNumberEngine
T E::result_type
定義
e E の値
v E の左辺値
x , y E の値(const修飾されている可能性あり)
s T の値
q SeedSequence 左辺値
z unsigned long long 型の値
os std::basic_ostream の特殊化である型の左辺値
is std::basic_istream の特殊化である型の左辺値
n E の状態の サイズ
TA E 遷移アルゴリズム
GA E 生成アルゴリズム
**注記**: 提供されたHTMLコード内のテキストは以下の通りです: - C++コード(` `内)は翻訳対象外 - 数学表記(` `および` `内)は翻訳対象外 - HTMLタグと属性は保持 翻訳すべき通常のテキスト部分が存在しないため、元のHTML構造はそのまま保持されています。
戻り値の型 セマンティクス 計算量
E ( ) N/A E の他のすべてのデフォルト構築されたエンジンと同じ初期状態でエンジンを作成します。 O(n)
E ( x ) xと等しいと比較するエンジンを作成します。 O(n)
E ( s ) 初期状態が s によって決定されるエンジンを作成します。 O(n)
E ( q ) q.generate の単一呼び出しによって初期状態が決定されるエンジンを作成します。 q.generate の複雑さと同じ(長さ n のシーケンスに対して呼び出された場合)
e. seed ( ) void 事後条件: e == E ( ) . E ( ) と同じ
e. seed ( s ) void 事後条件: e == E ( s ) . E ( s ) と同じ
e. seed ( q ) void 事後条件: e == E ( q ) . E ( q ) と同じ
e ( ) T e の状態を e i から e i+1 へ進め(すなわち TA ( e i ) )、 GA ( e i ) を返す。 償却定数時間
e. discard ( z ) void e の状態を e i から e i+z へ進める。これは e ( ) z 回の連続呼び出しと等価な方法で行われる。 e ( ) z 回の連続呼び出しの計算量より悪くない
x == y bool すべての正の整数 i について、 x ( ) y ( ) のi回目の連続呼び出しが同じ値を返す場合、 true を返す。それ以外の場合は false を返す。 O(n)
x ! = y bool ! ( x == y ) O(n)
os << x decltype ( os ) & fmtflagsが std:: ios_base :: dec | std:: ios_base :: left に設定され、埋め文字がスペース文字に設定された状態で、 os x の現在の状態のテキスト表現を書き込む。

事後条件: os のfmtflagsと埋め文字は以前と同じ状態である。

O(n)
is >> v decltype ( is ) & fmtflagsが std:: ios_base :: dec に設定されている場合、 is から v の現在の状態のテキスト表現を読み取る。不正な入力が検出された場合、 v の状態が操作によって変更されないことを保証し、 is. setstate ( std:: ios_base :: failbit ) を呼び出す(これは std::ios_base::failure をスローする可能性がある)。

前提条件: is は、以下のすべての条件を満たす出力ストリーム pr を使用して以前に書き込まれたテキスト表現を提供する:

  • is. getloc ( ) == pr. getloc ( ) true である。
  • std:: is_same < decltype ( is ) :: char_type ,
    decltype ( pr ) :: char_type > :: value
    true である。
  • std:: is_same < decltype ( is ) :: traits_type ,
    decltype ( pr ) :: traits_type > :: value
    true である。

事後条件: is のfmtflagsは以前と同じである。

O(n)

標準ライブラリ

以下の標準ライブラリ機能は RandomNumberEngine を満たします:

線形合同法 を実装する
(クラステンプレート)
メルセンヌ・ツイスタ アルゴリズムを実装する
(クラステンプレート)
減算キャリー( 遅延フィボナッチ )アルゴリズムを実装する
(クラステンプレート)
カウントベースの並列化可能なジェネレータ
(クラステンプレート)
乱数エンジンの出力の一部を破棄する
(クラステンプレート)
乱数エンジンの出力を指定されたビット数のブロックにパックする
(クラステンプレート)
乱数エンジンの出力を異なる順序で提供する
(クラステンプレート)

以下の標準ライブラリ機能は UniformRandomBitGenerator を満たしますが、 RandomNumberEngine は満たしません:

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