piecewise_constant_distribution
random[meta header]
std[meta namespace]
class template[meta id-type]
cpp11[meta cpp]
namespace std {
template <class RealType = double >
class piecewise_constant_distribution ;
}
piecewise_constant_distributionは、区間ごとの重み付けを定数値とした分布を生成するクラスである。
このクラスはコンストラクタに、値の区間を表す数列と、区間ごとに線形に変化する重みの数列を設定する。重み数列の要素数は、区間数列の要素数 - 1個である。
パラメータを、区間 {0.0, 1.0, 2.0}、重み {0.3, 0.5}のように設定した場合、区間[0.0, 1.0)の値が出現する確率は0.3、区間[1.0, 2.0)の値が出現する確率は0.5となる。
テンプレートパラメータは、以下を意味する。
名前
説明
対応バージョン
(constructor)
コンストラクタ
C++11
~piecewise_constant_distribution() = default;
デストラクタ
C++11
reset
状態をリセットする
C++11
型
説明
対応バージョン
result_type
乱数生成結果の型 RealType。
C++11
param_type
分布パラメータの型。未規定。
C++11
#include < fstream>
#include < random>
#include < array>
#include < cstdint>
int main ()
{
std::random_device seed_gen;
std::uint32_t seed = seed_gen ();
std::default_random_engine engine (seed);
// [0.0, 5.0)の値は、0.3の確率で出現する。
// [5.0, 10.0)の値は、0.5の確率で出現する。
std::array<double , 3 > intervals = {0.0 , 5.0 , 10.0 };
std::array<double , 2 > densities = {0.3 , 0.5 };
std::piecewise_constant_distribution<> dist (
intervals.begin (),
intervals.end (),
densities.begin ()
);
std::ofstream file (" piecewise_constant_distribution.tsv" );
for (int i = 0 ; i < 1000 ; ++i) {
double result = dist (engine);
file << result << " \n " ;
}
}
std::piecewise_constant_distribution[color ff0000]
intervals.begin()[link /reference/array/array/begin.md]
intervals.end()[link /reference/array/array/end.md]
densities.begin()[link /reference/array/array/begin.md]
std::ofstream[link /reference/fstream/basic_ofstream.md]
dist(engine)[link piecewise_constant_distribution/op_call.md]
このプログラムによってある時に得られた結果(piecewise_constant_distribution.tsv )を図示する。