如果需要在N,M范围内生成随机数,但是有更多接近avg的数字(N <= avg <= M),则最好使用:
poisson_distribution或normal_distribution在cppreference页面(页面底部)看到示例时,它们都会生成所需的内容:
poisson_distribution在4点
0 *
1 *******
2 **************
3 *******************
4 *******************
5 ***************
6 **********
7 *****
8 **
9 *
10
11
12
13带标准差2的5点处的2
-2
-1
0
1 *
2 ***
3 ******
4 ********
5 **********
6 ********
7 *****
8 ***
9 *
10
11
12选择什么?可能是别的什么?
发布于 2015-05-07 15:27:21
您可以将两个发行版集中在一个适合您的需要的点上。
但如果M较小,则泊松分布有一个“肥尾”,即比正态分布得到高于M值的概率更高。
在正常情况下,您可以通过方差参数(它可以是您想要的大小)来控制这个机会。
另一个比较明显的区别是泊松会给出正整数,正态分布会给出[N,M]范围内的任何数。
另外,当[N,M]足够大时,泊松收敛到正态分布。因此,即使泊松模型是正确的,正常近似也不会如此不准确。
考虑到这一点,如果数字不能模拟一个计数过程,我会选择正常的。
发布于 2015-05-07 18:08:28
如果你需要在一个有限制的范围内得到结果,这两种选择都不是很好。正态分布两端有无限尾,泊松分布有无限上尾。至少你会想要其中之一的截短形式。如果你没有截断,注意法线总是对称的关于它的平均值,而泊松可能是相当偏斜的。这两种分布在正态分布是连续的,泊松分布是离散的情况下也是不同的,尽管你可以通过结合结果来离散连续分布。
如果您希望在有界范围内获得一组离散的结果,您可以尝试一个缩放和移位的二项分布。带有参数n和p的二项式计算当试验是独立的时候,您从n试验中获得多少“成功”,并且所有的结果都可以通过概率p获得成功。将结果按N进行n = M - N变换,得到N,M范围内的结果。
如果您想要一个连续的结果范围,考虑一个β分布。您可以伪造参数以获得广泛的分布形状,并按平均值拨号到您想要的位置,并将其scale+shift到您想要的任何范围。
发布于 2015-05-08 18:02:48
如果你需要在范围内的分布(不是像法线或泊松那样的无限或半无限分布),而是有明确的最大值,你可以尝试几个自由度的Irwin-Hall one。假设IH( 16 )的最小值为0,最大值为16,峰值为8,参见分布
非常容易采样,易于缩放,而且您可以使用n来获得更宽或更窄的峰值
https://stackoverflow.com/questions/30105250
复制相似问题