|
|
1
1
我认为把这个问题分成两步是一个很好的开始。首先,如果你有一个离散的概率分布,那么从这个分布中画出来的问题并不是那么糟糕。Boost random有这样做的方法。向下滚动这个 page 以加权骰子为例。它将从给定的概率分布返回一个整数。可以使用此整数从感兴趣的数组中选择元素。 问题的第二部分是如何从一个连续的概率分布,比如 exponential 这里的想法是从一组离散点的连续分布中进行采样,然后调整这些点(规格化),使它们合为一。指数分布的代码如下。
然后,您可以将输出变量输入boost库中的加权骰子示例,它应该符合您的需要。这种一般的离散采样,然后规范化矢量的方法可以适用于多种不同的分布。 |
|
|
2
4
如果希望随机数的概率与f(x)成正比,那么从均匀分布u中选择一个随机数,然后应用f^-1(u),这就是新的数。 所以,如果你希望随机数的概率与exp(-x)成正比,那么你选择一个均匀分布的随机数,取它的ln:
应该给你一个概率分布为exp(-x)的随机数。
注:我不是这么说的
编辑:忘记负号:
|
|
|
3
2
问题2:“示例:使用高斯正态分布,结果总是某个数组中的有效索引(意思是:首选中间元素)。” 除非我误会这不是真的。服从正态分布的随机变量理论上可以取范围内的值(-无穷大,无穷大)。因此,除非截断异常值并强制位于外部的随机变量值(例如,+/-3标准偏差到+/-3标准偏差值),否则无法强制正态分布到有限网格上。 |
|
|
4
2
第一季度) 听起来你要找的是 exponential distribution . Boost库附带一个 exponential distribution generator . 问题2) histogram . 在您站点的示例中,设置数组中间区域的容器,以表示更接近从分布中绘制的正常随机值平均值的元素。如果您没有足够的关于分布性质的信息,您将需要从感兴趣的分布中收集一个代表性的样本并将其存储在另一个数组中。使用样本的最小值和最大值,然后可以创建另一个数组来计算每个容器中有多少采样元素。一个合理的经验法则是,如果有n个样本,则应该有sqrt(n)容器。
|
|
|
5
1
我想你是 不 无界的 元素的数量,因此会对序列的最后一个元素产生偏差。 适合你的问题是 Beta distribution |