C++ 名前付き要件: RandomNumberDistribution (C++11 以降)
From cppreference.com
RandomNumberDistribution は、確率密度関数 p(x) または 離散確率分布 P(xi) に従う乱数を返す関数オブジェクトです。
[編集] 要件
型 D は、以下の場合に RandomNumberDistribution を満たします。
-
Dは CopyConstructible を満たす -
Dは CopyAssignable を満たす
以下を考えます。
-
Tは、D::result_type によって名付けられた型 -
Pは、D::param_type によって名付けられた型であり、
- CopyConstructible を満たす
- CopyAssignable を満たす
- EqualityComparable を満たす
- 分布パラメータに対応する引数を受け取る
Dの各コンストラクタと同一の引数を受け取るコンストラクタを持つ。 - 分布のパラメータを返す
Dの各メンバ関数と同一の名前、型、セマンティクスを持つメンバ関数を宣言する。 - メンバ型エイリアス using distribution_type = D; を宣言する
-
dは、型Dの値 -
xおよびyは、型Dの (おそらく const な) 値 -
pは、型Pの (おそらく const な) 値 -
g、g1、g2は、UniformRandomBitGenerator を満たす型の左辺値 -
osは、std::basic_ostream の特殊化の左辺値 -
isは、std::basic_istream の特殊化の左辺値
以下の式は有効であり、指定された効果を持たなければなりません。
| Expression | 型 | 注釈 | 計算量 |
|---|---|---|---|
D::result_type |
T |
算術型 | コンパイル時 |
D::param_type |
P |
コンパイル時 | |
D() |
他のデフォルト構築された D と区別できない分布を作成する。 |
Constant | |
D(p) |
p を構築するために使用された値から直接構築された D と区別できない分布を作成する。 |
p の構築と同じ | |
d.reset() |
void |
分布の内部状態をリセットする。reset() より前に生成されたエンジンによって生成された値に依存しない、d に対する次の operator() の呼び出し。 |
Constant |
x.param() |
P |
D(p).param() == p となるような p を返す。 |
D(p) より悪くない |
d.param(p) |
void |
事後条件: d.param() == p |
D(p) より悪くない |
d(g) |
T |
同じ g でこの呼び出しを繰り返し呼び出したときに返される数値のシーケンスは、d.param() でパラメータ化された分布に従ってランダムに分布する。 |
g の呼び出しの償却定数時間 |
d(g,p) |
T |
同じ g でこの呼び出しを繰り返し呼び出したときに返される数値のシーケンスは、p でパラメータ化された分布に従ってランダムに分布する。 |
g の呼び出しの償却定数時間 |
x.min() |
T |
x のパラメータの現在の値によって決定される、x の operator() が返す可能性のある値の最大下界。 |
Constant |
x.max() |
T |
x のパラメータの現在の値によって決定される、x の operator() が返す可能性のある値の最小上界。 |
Constant |
x == y |
bool |
同値関係を確立する。x.param() == y.param() であり、g1 == g2 である限り、x(g1) および y(g2) の繰り返し呼び出しによって生成される将来の無限シーケンスの値が等しくなる場合、true を返す。 |
Constant |
x != y |
bool |
!(x == y) |
Constant |
os << x |
os の型への参照 |
os に分布パラメータと内部状態のテキスト表現を書き込む。os のフォーマットフラグとフィル文字は変更されない。 |
|
is >> d |
is の型への参照 |
is から読み取ったデータで分布パラメータと内部状態を復元する。is のフォーマットフラグは変更されない。データは、同じロケール、CharT、および Traits ストリームテンプレートパラメータを持つストリームを使用して書き込まれている必要がある。そうでない場合、動作は未定義である。不正な入力が発生した場合、is.setstate(std::ios::failbit) が呼び出され、std::ios_base::failure がスローされる可能性がある。その場合、d は変更されない。 |
[編集] ノート
分布オブジェクトのパラメータは、d.param(p) を使用して永続的に変更するか、d(g,p) を使用して operator() の単一の呼び出し期間だけ変更できます。
分布の const メンバ関数および os << d の呼び出しは、d(g) の繰り返し呼び出しによって生成される数値のシーケンスに影響を与えません。
[編集] 標準ライブラリ
以下の標準ライブラリコンポーネントは、RandomNumberDistribution を満たします。
| (C++11) |
範囲内で一様に分布する整数値を生成する (クラステンプレート) |
| (C++11) |
範囲内で一様に分布する実数値を生成する (クラステンプレート) |
| (C++11) |
ベルヌーイ分布で bool 値を生成する。 (クラス) |
| (C++11) |
二項分布に従う整数値を生成する (クラステンプレート) |
| 負の二項分布に従う整数値を生成する (クラステンプレート) | |
| (C++11) |
幾何分布に従う整数値を生成する (クラステンプレート) |
| (C++11) |
ポアソン分布で整数値を生成する。 (クラステンプレート) |
| (C++11) |
指数分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
ガンマ分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
ワイブル分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
極値分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
標準正規 (ガウス) 分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
対数正規分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
カイ二乗分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
コーシー分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
フィッシャーのF分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
スチューデントのt分布に従う実数値を生成する (クラステンプレート) |
| (C++11) |
離散分布で乱整数を生成する。 (クラステンプレート) |
| 一定の小区間で分布する実数値を生成する (クラステンプレート) | |
| 定義された小区間で分布する実数値を生成する (クラステンプレート) |