std::discrete_distribution<IntType>::discrete_distribution

来自cppreference.com
 
 
数值库
常用数学函数
特殊数学函数 (C++17)
数学常数 (C++20)
浮点环境 (C++11)
复数
数值数组
伪随机数生成
编译时有理数算术 (C++11)
数值算法
(C++17)
(C++17)
插值
(C++20)
(C++20)
通用数值运算
(C++11)
位操作
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
(C++20)
 
 
 
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 + δ/2 + i · δ)
,其中 δ =
(xmax − xmin)
count
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) 的要求。