• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    class template
    <random>

    std::gamma_distribution

    namespace std {
      template <class RealType = double>
      class gamma_distribution;
    }
    

    概要

    gamma_distributionは、連続確率分布の一種であるガンマ分布を表すクラスである。
    以下の確率密度関数に基いて、浮動小数点数の値xを生成する:

    p(xα,β)=ex/ββαΓ(α)xα1

    この数式においてα(alpha)は形状母数(shape parameter)、β(beta)は尺度母数(scale parameter)を表す。
    形状母数に正の整数を与えれば、アーラン分布(Erlang distribution)としても使用できる。

    ガンマ分布は、以下のような用途に使用できる:

    • 均一に忙しいコールセンターに10回電話をかけ、つながるまでの時間の統計を求める
    • 放射性物質の大きな塊があるとき、1000回原子核崩壊するまでにかかる時間を観察する

    テンプレートパラメータは、以下を意味する:

    • RealType : 生成する実数の型。

    メンバ関数

    構築・リセット

    名前 説明 対応バージョン
    (constructor) コンストラクタ C++11
    ~gamma_distribution() = default; デストラクタ C++11
    reset 状態をリセットする C++11

    生成

    名前 説明 対応バージョン
    operator() 乱数を生成する C++11

    プロパティ

    名前 説明 対応バージョン
    alpha 形状母数を取得する C++11
    beta 尺度母数を取得する 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::gamma_distribution<> dist(1.0, 1.0);
    
      std::ofstream file("gamma_distribution.tsv");
      for (std::size_t n = 0; n < 1000; ++n) {
        // ガンマ分布で乱数を生成する
        double result = dist(engine);
        file << result << "\t\n";
      }
    }
    

    出力

    このプログラムによってある時に得られた結果(gamma_distribution.tsv)を図示する。

    バージョン

    言語

    • C++11

    処理系

    参考