namespace std {
template <class RealType = double>
class weibull_distribution;
}
概要
weibull_distribution
は、確率分布の一種であるワイブル分布を表すクラスである。
ワイブル分布は、物体の劣化、寿命、強度、破壊といったものを記述するために考案された分布法である。
ワイブル分布は、以下の確率密度関数に基いて、浮動小数点数の値を生成する:
$$ p(x \mid a, b) = \frac{a}{b} \cdot \left( \frac{x}{b} \right)^{a-1} \cdot \exp \left( - \left( \frac{x}{b} \right)^{a} \right) $$
この数式においてaはワイブル係数(形状パラメータ : shape parameter)、bは尺度パラメータ(scale parameter)である。
テンプレートパラメータは、以下を意味する:
RealType
: 生成する実数の型。
メンバ関数
構築・リセット
名前 | 説明 | 対応バージョン |
---|---|---|
(constructor) |
コンストラクタ | C++11 |
~weibull_distribution() = default; |
デストラクタ | C++11 |
reset |
状態をリセットする | C++11 |
生成
名前 | 説明 | 対応バージョン |
---|---|---|
operator() |
乱数を生成する | C++11 |
プロパティ
名前 | 説明 | 対応バージョン |
---|---|---|
a |
形状母数を取得する | C++11 |
b |
尺度母数を取得する | C++11 |
param |
分布のパラメータを取得/設定する | C++11 |
min |
生成し得る値の下限を取得する | C++11 |
max |
生成し得る値の上限を取得する | C++11 |
メンバ型
型 | 説明 | 対応バージョン |
---|---|---|
result_type |
乱数生成結果の実数型 RealType 。 |
C++11 |
param_type |
分布パラメータの型。未規定。 | C++11 |
非メンバ関数
名前 | 説明 | 対応バージョン |
---|---|---|
operator== |
等値比較 | C++11 |
operator!= |
非等値比較 | C++11 |
operator<< |
ストリームへの出力 | C++11 |
operator>> |
ストリームからの入力 | C++11 |
例
#include <random>
#include <fstream>
int main()
{
std::random_device seed_gen;
std::default_random_engine engine(seed_gen());
// 形状パラメータ1.0、尺度パラメータ1.0で分布させる
std::weibull_distribution<> dist1(1.0, 1.0);
// 形状パラメータ1.0、尺度パラメータ2.0で分布させる
std::weibull_distribution<> dist2(1.0, 2.0);
std::ofstream file("weibull_distribution.tsv");
for (std::size_t n = 0; n < 1000; ++n) {
// ワイブル分布で乱数を生成する
double r1 = dist1(engine);
double r2 = dist2(engine);
file << r1 << "\t" << r2 << "\n";
}
}
出力
このプログラムによってある時に得られた結果(weibull_distribution.tsv)を図示する。
この図において、破線はdist1(a = 1.0, b = 1.0)、実線はdist2(a = 1.0, b = 2.0)を意味する。
バージョン
言語
- C++11
処理系
- Clang:
- GCC: 4.7.2 ✅
- ICC:
- Visual C++: