std::piecewise_linear_distribution
STD:分段[医]线性[医]分布
Defined in header | | |
---|---|---|
template< class RealType = double > class piecewise_linear_distribution; | | (since C++11) |
std::piecewise_linear_distribution
生成随机浮点数,这些浮点数是根据几个子区间中的每个子区间内的线性概率密度函数分布的。[乙
一,乙
I+1%29。这种分布使得每个区间边界处的概率密度正好是预定值p。
i.任何b的概率密度。
I≤x<b
I+1为p
我
Bi+1-x
*。
bi+1-bi
- P
I+1
X-比
*。
bi+1-bi
,其中区间边界处的概率密度为p。
k按w计算。
K/S其中S是所有的和
一
*。
二
%28周
K+w
K+1%29%28 b
K+1-b
K%29
区间边界集b
I和边界处的权重集w
我是这个分布的参数。
std::piecewise_linear_distribution
满足…的所有要求RandomNumberDistribution
...
模板参数
RealType | - | The result type generated by the generator. The effect is undefined if this is not one of float, double, or long double. |
---|
成员类型
Member type | Definition |
---|---|
result_type | RealType |
param_type | the type of the parameter set, see RandomNumberDistribution. |
成员函数
(constructor) | constructs new distribution (public member function) |
---|---|
reset | resets the internal state of the distribution (public member function) |
世代
运算符%28%29在分布%28公共成员函数%29中生成下一个随机数。
特征
中间值密度返回分布参数%28公共成员函数%29
Param获取或设置分布参数对象%28公共成员函数%29
min返回最小潜在生成值%28公共成员函数%29
MAX返回最大潜在生成值%28公共成员函数%29
非会员职能
operator==operator!= | compares two distribution objects (function) |
---|---|
operator<<operator>> | performs stream input and output on pseudo-random number distribution (function template) |
例
二次
#include <iostream>
#include <iomanip>
#include <string>
#include <map>
#include <random>
int main()
{
std::random_device rd;
std::mt19937 gen(rd()
// increase the probability from 0 to 5
// remain flat from 5 to 10
// decrease from 10 to 15 at the same rate
std::vector<double> i{0, 5, 10, 15};
std::vector<double> w{0, 1, 1, 0};
std::piecewise_linear_distribution<> d(i.begin(), i.end(), w.begin()
std::map<int, int> hist;
for(int n=0; n<10000; ++n) {
++hist[d(gen)];
}
for(auto p : hist) {
std::cout << std::setw(2) << std::setfill('0') << p.first << ' '
<< std::string(p.second/100,'*') << '\n';
}
}
二次
可能的产出:
二次
00 *
01 ***
02 ****
03 ******
04 *********
05 *********
06 *********
07 **********
08 *********
09 **********
10 *********
11 *******
12 ****
13 ***
14 *
二次
© cppreference.com
在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。