Namespaces
Variants

std::discrete_distribution<IntType>:: discrete_distribution

From cppreference.net
discrete_distribution ( ) ;
(1) (C++11以降)
template < class InputIt >
discrete_distribution ( InputIt first, InputIt last ) ;
(2) (C++11以降)
discrete_distribution ( std:: initializer_list < double > weights ) ;
(3) (C++11以降)
template < class UnaryOperation >

discrete_distribution ( std:: size_t count, double xmin, double xmax,

UnaryOperation unary_op ) ;
(4) (C++11以降)
explicit discrete_distribution ( const param_type & params ) ;
(5) (C++11以降)

新しい分布オブジェクトを構築します。

1) デフォルトコンストラクタ。単一の重み p = {1 で分布を構築します。この分布は常に 0 を生成します。
2) 範囲 [ first , last ) 内の重みで分布を構築します。 first == last の場合、効果はデフォルトコンストラクタと同じです。
3) weights 内の重みで分布を構築する。実質的に discrete_distribution ( weights. begin ( ) , weights. end ( ) ) を呼び出す。
4) 関数 unary_op を用いて生成される count 個の重みで分布を構築する。各重みは w i = unary_op(xmin + δ(i + 0.5)) に等しく、ここで δ =
(xmax − xmin)
count
であり、 i ∈ {0, ..., count − 1 } である。 xmin xmax δ > 0 となるように設定しなければならない。 count == 0 の場合、効果はデフォルトコンストラクタと同じである。
5) 分布を params を分布パラメータとして構築します。

パラメータ

first, last - 重みとして使用する数値を定義する要素の範囲。 InputIterator によって参照される要素の型は double に変換可能でなければならない
weights - 重みを含む初期化子リスト
unary_op - 適用される単項演算関数オブジェクト

関数のシグネチャは以下と同等であるべき:

Ret fun ( const Type & a ) ;

シグネチャは const & を持つ必要はない
Type は、 double 型のオブジェクトが逆参照され、暗黙的に Type に変換可能でなければならない。型 Ret は、 double 型のオブジェクトが逆参照され、型 Ret の値を代入可能でなければならない

params - 分布パラメータセット
型要件
-
InputIt LegacyInputIterator の要件を満たさなければならない