3

我想以最小到最大的间隔生成随机整数。对于 numpy 中的均匀分布:

numpy.random.randint(min,max,n)

做我想要的。

但是,我现在想给随机数的分布一个指数偏差。对此有许多建议,例如Pseudorandom Number Generator - Exponential Distribution以及 numpy function numpy.random.RandomState.exponential,但这些没有解决如何将分布限制为 min 和 max 之间的整数。我不确定如何做到这一点,同时仍然确保随机分布。

4

2 回答 2

0

指数分布是连续分布。您可能想要的是它的离散等价物,即几何分布Numpy 的实现会生成严格的正整数,即 1,2,3,...,因此您需要 addmin-1来移位它,然后通过拒绝/丢弃 results 来截断> max。反过来,这意味着将它们一个接一个地生成,并将未拒绝的值添加到列表中,直到您获得所需的数字。(您还可以通过分析确定您期望被拒绝的比例,并相应地调整您的比例n,但您仍然可能最终会出现一些短缺或过多的情况。)

可以在没有拒绝的情况下执行此操作,但您必须创建自己的反演,确定超过 的概率max,并生成介于 0 和该概率之间的均匀值以提供给您的反演算法。即使效率较低,拒绝也更简单。

于 2014-06-24T21:05:13.357 回答
0

也许你可以尝试总结所有的偏见。然后是生成整数的概率j= bias of j / total bias。您可以使用蒙特卡罗模拟来实现这一点。

于 2018-10-02T06:11:33.753 回答