首页 > 解决方案 > 如何从大量数字中生成有偏随机数

问题描述

我想让 Python 3.7.1 选择一个介于 0 和 100 之间的数字。但是我希望以反向指数平滑毕业曲线的方式(没有准确地说)。

我想我可以从

myrandomnumber = random.randint(0, 100)

然后将其链接到某种数组以确定每个数字的不同百分比。我见过其他人用随机掷骰子来做到这一点,但问题是,这对于六种可能性来说非常简洁,我想这样做一百(或更多)并且不想坐在那里做一个巨大的仅为此而包含一百个条目的数组。当然,我想我可以这样做,但我觉得 Python 可能有一个非常简单的方法可以做到这一点,而我却错过了。

谢谢各位!

标签: pythonpython-3.xrandom

解决方案


您可能想要的是一个伽马分布的随机数。

例如使用k=1and θ=2.0

在此处输入图像描述

有一些算法可以使用均匀分布random函数来生成normalexponentialgamma分布值。

但既然你在 python 中,你可能会直接跳到使用 numpy 的random.gamma函数:

#the (1,2) shape ends basically at 20. Multiply by 5 to get my 0..100 scale
numpy.random.gamma(1, 2.0) * 5

推荐阅读