我遇到了一个问题。我必须在 python 中实现一个算法,它需要一个随机数 X,例如 Pr[X ≥ k] = 1/k。我不知道是否已经存在可以给我这个确切值的分布,或者是否有办法使用简单的随机 python 库来实现这个随机生成器。有没有办法做到这一点?预先感谢您的帮助!
最佳答案
最简单的尝试就是让
X = 1.0 / random.random()
但是,random.random()
的值可以为零,因此这可能会导致被零除错误。根据文档,该值永远不能为 1.0,因此请使用
X = 1.0 / (1.0 - random.random())
对于这个分布,
Pr[X ≥ k] = Pr[0 < 1/X ≤ 1/k]
= Pr[0 < 1 - random.random() ≤ 1/k]
= Pr[1 - 1/k ≤ random.random() < 1]
= 1 - (1 - 1/k) {因为 random() 在 [0,1) 中是均匀的并且 [1-1/k, 1) 是一个子区间}
= 1/k
(我希望我可以在这里使用 MathJax!)当然,所有这些都假设 k ≥ 1,否则你的条件就没有意义了。我还假设 X 是一个连续的随机变量,从 1 到无穷大。如果X是一个正整数(因此k也是一个正整数),就取我给出的公式的底数。
关于python - 服从一定分布的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38675845/