Mar*_*rco 2 python random probability
我遇到了问题.我必须在python中实现一个算法,它需要一个随机数X,如Pr [X≥k] = 1/k.我不知道是否已经存在一个可以给我这个确切值的分布,或者是否有办法使用简单的随机python库实现这个随机生成器.有没有办法做到这一点?预先感谢您的帮助!
最简单的尝试是做
X = 1.0 / random.random()
Run Code Online (Sandbox Code Playgroud)
但是,random.random()可以具有零值,因此这可能导致被零除错误.根据文档,该值永远不能为1.0,因此请使用
X = 1.0 / (1.0 - random.random())
Run Code Online (Sandbox Code Playgroud)
对于这种分发,
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也是一个正整数),那么只需考虑我给出的公式.