首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::piecewise_linear_distribution

Defined in header <random>

?

?

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)

二次

代码语言:javascript
复制
#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';
    }
}

二次

可能的产出:

二次

代码语言:javascript
复制
00 *
01 ***
02 ****
03 ******
04 *********
05 *********
06 *********
07 **********
08 *********
09 **********
10 *********
11 *******
12 ****
13 ***
14 *

二次

代码语言:txt
复制
 ? cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com