如何在向上边界递减几率(接近零)的情况下产生一个随机数?

时间:2014-07-12 15:16:37

标签: random probability pseudocode

我想要一个随机数生成器,它几乎不会产生接近给定上边界的数字。赔率应该线性下降到0到上边界。

这可能最适合作为数学问题,但我需要它以代码形式(伪代码很好,更具体地说是任何基于C语言)供我使用,所以我把它放在这里

1 个答案:

答案 0 :(得分:2)

如果您想要线性下降,您所描述的内容称为triangle(或三角形)分布。如果U[0,1)范围内均匀分布的随机数的来源,则可以使用以下内容[a,b)生成范围为a的三角形:

def triangle(a,b)
    return a + (b-a)*(1 - sqrt(U))
end

这可以通过编写指定范围的三角形方程,对其进行缩放以使其具有区域1以使其成为有效density,进行积分以获得CDF并使用{ {3}}

有趣的是,如果a >= b,这仍然有用。为了平等,你总是得到a(如果范围为零则有意义)。否则,您会得到一个从ba的三角形,其模式为a