随机数分布c语言,C++ piecewise_linear_distribution分段线性分布随机数用法详解

piecewise_linear_distribution 模板定义了浮点值的连续分布,它的概率密度函数是从一系列的样本值所定义的点得到的。每个样本值的权重都决定了它的概率密度值。图 1 展示了一个示例。

37c9e1075c69ca8367a5e66f88796239.png

图 1 分段线性分布

图 1 展示了由 5 个定义在容器 v 中的样本值确定的分布。每个值都有权重,权重是由 w 容器中对应的元素定义的,每个权重确定了对应值的概率密度。

一个样本和另一个样本之间的概率密度值是线性的,在这两个样本的概率密度之间。构造函数的前两个参数是指定值序列的迭代器,第三个参数指向 weights 序列中第一个元素的迭代器。这个以分段线性曲线表示概率密度的分布会生成从 10 到 60 的随机值。分布中的样本值可以通过调用它的成员函数 intervals() 来获取。可以通过调用这个分布对象的 densities() 来得到一个包含这些概率密度的 vector 容器。

确定整个序列中值的概率密度有些复杂。整个概率曲线下的面积表示的是整个序列中出现的任何值的概率,因此必须是 1。为了适应这种情况,区间内值的概率可以按如下方式来计算,首先计算出定义区间的权重值的平均数乘以区间的长度之和。因此,s 可以由下面这个等式定义:

54edca69ad045c4b99d3834b6d839388.png

vi 是样本值,wi 是它们对应的权重。

两个样本值之间的区间内任意值 x 的概率是 p,[vi ,vi +1) 是由样本值概率的线性组合决定的,每个区间末尾所共享的概率和 x 到样本值的距离成正比。下面用数学术语来表示 x 的概率:

4cec66d9820fa9f5057f5e54dcd9c271.png

在图 1 所示的示例中,s 为 (30-10)x(12+6)/2+(40-30)x(9+12)/2+(55-40)x(6+9)/2+(60-55)x(0+6)/2,等于412.5。

第 i 个样本值的概率为 wi /s,因此图 1

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值