std::discrete_distribution<IntType>::discrete_distribution

来自cppreference.com
 
 
 
 
 
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) 构造拥有范围 [firstlast) 中权重的分布。若 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
and i ∈ {0, ..., count − 1}。xminxmax 必须使得 δ > 0。若 count == 0,则效果同默认构造函数。
5)params 为分布参数构造分布。

参数

first, last - 定义用作权重的数的元素范围。 InputIterator 所指的元素类型必须可转换为 double
weights - 含各权重的 initializer_list
unary_op - 将要应用的一元算符函数。
函数签名应等价于如下者:

 Ret fun(const Type &a);

签名不必有 const &
类型  Type 必须使得 double 类型对象能在解引用后隐式转换到  Type。 类型 Ret 必须使得 double 类型对象能被解引用并能被赋 Ret 类型值。 ​

params - 分布参数集
类型要求
-
InputIt 必须满足老式输入迭代器 (LegacyInputIterator)