名前付き要件: RandomNumberDistribution
提供: cppreference.com
RandomNumberDistribution は確率密度関数 p(x) または離散確率分布 P(x
i) に従って乱数を返す関数オブジェクトです。
[編集] 要件
以下の内容を満たす場合、型 D
は RandomNumberDistribution を満たします。
-
D
が CopyConstructible を満たす -
D
が CopyAssignable を満たす
さらに、
- D::result_type によって表される型
T
- D::param_type によって表される以下の内容を満たす型
P
- CopyConstructible を満たす
- CopyAssignable を満たす
- EqualityComparable を満たす
- 分布のパラメータに対応する引数を取る
D
のコンストラクタのそれぞれと同一の引数を取るコンストラクタを持つ - 分布のパラメータを返す
D
のすべてのメンバ関数と同一の名前、型、意味論を持つメンバ関数を持つ - メンバ型 using distribution_type = D; を宣言する
-
D
型の値d
-
D
型の値x
,y
(const かもしれません) -
P
型の値p
(const かもしれません) - UniformRandomBitGenerator を満たす型の左辺値
g
,g1
,g2
- std::basic_ostream の特殊化の左辺値
os
- std::basic_istream の特殊化の左辺値
is
が与えられたとき、以下の式が有効でなければならず、指定された効果を持たなければなりません。
式 | 型 | 注釈 | 計算量 |
---|---|---|---|
D::result_type |
T |
算術型 | コンパイル時 |
D::param_type |
P |
コンパイル時 | |
D() |
他のあらゆるデフォルト構築された D と区別できない分布を作成します。 |
定数時間 | |
D(p) |
p を構築するのに使用された値から直接構築された D と区別できない分布を作成します。 |
p の構築と同じ
| |
d.reset() |
void |
分布の内部状態をリセットします。 d に対する次の operator() の呼び出しは reset() 以前のいかなるエンジンによって生成された値にも依存しません。 |
定数時間 |
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() によって返される可能性のある値の最も大きな下限 |
定数時間 |
x.max() |
T |
x のパラメータの現在の値によって決定される、 x の operator() によって返される可能性のある値の最も小さな上限 |
定数時間 |
x == y |
bool |
同等関係を確立します。 x.param() == y.param() であり、さらに g1 == g2 である限り x(g1) と y(g2) の繰り返しの呼び出しによって生成されるであろう値の将来の無限のシーケンスが等しいであろう場合は true を返します。 |
定数時間 |
x != y |
bool |
!(x == y) |
定数時間 |
os << x |
os の型への参照 |
分布のパラメータおよび内部状態のテキスト表現を os に書き込みます。 os の書式フラグおよびフィル文字は変更されません。 |
|
is >> d |
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) |
離散分布の整数乱数を生成します。 (クラステンプレート) |
定数部分区間列に分布する実数値を生成します。 (クラステンプレート) | |
定義された部分区間列に分布する実数値を生成します。 (クラステンプレート) |