如果需要在[ N , M ]范围内生成randoms,但有更多数字靠近 avg ( N < = avg < = M ),最好使用:
查看cppreference页面(页面底部)的示例,它们都会生成所需内容:
点poisson_distribution
4
:
0 *
1 *******
2 **************
3 *******************
4 *******************
5 ***************
6 **********
7 *****
8 **
9 *
10
11
12
13
normal_distribution
点5
,标准差2
:
-2
-1
0
1 *
2 ***
3 ******
4 ********
5 **********
6 ********
7 *****
8 ***
9 *
10
11
12
选择什么?可能是别的什么?
答案 0 :(得分:3)
如果您需要有限范围内的结果,那么这两种选择都不是很好。正态分布在两端都有无限的尾部,泊松分布具有无限的上尾。至少你需要一个截断形式的其中一个。如果你没有截断,请注意法线的平均值始终是对称的,而泊松可能非常偏斜。这两个分布的不同之处在于法线是连续的,泊松是离散的,尽管你可以通过对结果进行分组来离散连续分布。
如果你想在有界范围内得到一组离散的结果,你可以尝试缩放并移动binomial distribution。参数n
和p
的二项式计算了多少"成功"当试验是独立的并且所有试验都以概率n
成功时,你就会退出p
试验。设为n = M - N
并将结果移动N以获得[N,M]范围内的结果。
如果您想要一系列连续的结果,请考虑beta distribution。您可以捏造参数以获得各种各样的分布形状,并在平均值上拨打您想要的位置,并将其缩放+移动到您想要的任何范围。
答案 1 :(得分:2)
您可以将两个发行版集中在一个适合您需求的点上。
但是如果M
很小,则泊松分布具有“胖尾”,即,与正态分布相比,获得高于M
的数字的概率更高。
在正常情况下,您可以通过方差参数控制此机会(它可以根据您的需要调整)。
另一个相当明显的区别是Poisson会onli给你正整数,而正态分布会给[N,M]
范围内的任何数字。
另外,当[N,M]
足够大时,泊松会收敛到正态分布。因此,即使Poisson是正确的模型,正态近似也不会那么不准确。
考虑到这一点,如果数字不模拟计数过程,我会选择正常。
答案 2 :(得分:1)
如果你需要在范围内的分布(不是像普通或泊松那样的无限或半无限的分布),但是具有明确的最大值,你可以尝试具有几个自由度的Irwin-Hall。说IH(16)的最小值为0,最大值为16,峰值为8,见http://en.wikipedia.org/wiki/Irwin%E2%80%93Hall_distribution
非常容易取样,易于扩展,您可以使用myTG = function(data.frame, cols = c("Name 1", "Name 2")) {
tableGrob(data.frame, cols = cols, show.rownames = FALSE, h.even.alpha = 0)
}
来获得更高或更窄的峰值
答案 3 :(得分:-2)
我更喜欢正态分布,因为它更接近现实生活中的问题,而泊松分布仅用于特殊情况。选择N.D可以使您的问题更加通用。