C++ named requirements: RandomNumberDistribution (since C++11)
RandomNumberDistribution は、 確率密度関数 p(x) または 離散確率分布 P(x i ) に従って乱数を返す関数オブジェクトです。
要件
型
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、(const修飾可能性のある)型Dの値 -
p、(const修飾可能性のある)型Pの値 -
g、g1、g2、 UniformRandomBitGenerator を満たす型の左辺値 -
os、 std::basic_ostream の特殊化の左辺値 -
is、 std::basic_istream の特殊化の左辺値
以下の式は有効であり、指定された効果を持たなければならない
| 式 | 型 | 注記 | 計算量 |
|---|---|---|---|
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
から読み取ったデータで分布パラメータと内部状態を復元する。
is
の書式フラグは変更されない。
データは同じロケール、
CharT
および
Traits
ストリームテンプレートパラメータを持つストリームを使用して書き込まれている必要があり、そうでない場合の動作は未定義。
不正な入力が検出された場合、
is.
setstate
(
std
::
ios
::
failbit
)
が呼び出され、
std::ios_base::failure
をスローする可能性がある。
その場合、
d
は変更されない
|
注記
分布オブジェクトのパラメータは、恒久的に変更するには d. param ( p ) を使用し、単一のoperator()呼び出しの期間のみ変更するには d ( g,p ) を使用します。
分布のconstメンバー関数の呼び出しおよび os << d は、繰り返し行われる d ( g ) によって生成される数値のシーケンスに影響を与えません。
標準ライブラリ
以下の標準ライブラリコンポーネントは RandomNumberDistribution を満たします
|
(C++11)
|
範囲内で均一に分布する整数値を生成する
(クラステンプレート) |
|
(C++11)
|
範囲内で均一に分布する実数値を生成する
(クラステンプレート) |
|
(C++11)
|
bool
値を
ベルヌーイ分布
に従って生成する
(クラス) |
|
(C++11)
|
二項分布
に従う整数値を生成する
(クラステンプレート) |
|
(C++11)
|
負の二項分布に従う整数値を生成する
Negative binomial distribution
(クラステンプレート) |
|
(C++11)
|
幾何分布に従う整数値を生成する
Geometric distribution
(クラステンプレート) |
|
(C++11)
|
ポアソン分布
に従う整数値を生成する
(クラステンプレート) |
|
(C++11)
|
指数分布
に従う実数値を生成する
(クラステンプレート) |
|
(C++11)
|
実数値を生成する
ガンマ分布
(クラステンプレート) |
|
(C++11)
|
実数値を
ワイブル分布
に従って生成する
(クラステンプレート) |
|
(C++11)
|
極値分布に従う実数値を生成する
極値分布
(クラステンプレート) |
|
(C++11)
|
実数値を生成する
標準正規分布(ガウス分布)
(クラステンプレート) |
|
(C++11)
|
対数正規分布に従う実数値を生成する
Lognormal distribution
(クラステンプレート) |
|
(C++11)
|
Chi-squared分布
上の実数値を生成する
(クラステンプレート) |
|
(C++11)
|
Cauchy分布
に従う実数値を生成する
(クラステンプレート) |
|
(C++11)
|
実数値を生成する
フィッシャーのF分布
(クラステンプレート) |
|
(C++11)
|
実数値を
スチューデントのt分布
に従って生成する
(クラステンプレート) |
|
(C++11)
|
離散分布で整数値を生成する
(クラステンプレート) |
|
(C++11)
|
一定の部分区間に分布する実数値を生成する
(クラステンプレート) |
|
(C++11)
|
定義された部分区間上に分布する実数値を生成する
(クラステンプレート) |