最終更新日時(UTC):
が更新

履歴 編集

class template
<random>

std::weibull_distribution(C++11)

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

処理系

参考