我遇到了问题。我必须在Python中实现一个需要随机数X的算法,如Pr [X≥k] = 1/k。我不知道是否已经存在一个分配,可以给我这个确切的值,或者如果有一种方法来实现这个随机生成器使用简单的随机Python库。有没有办法做到这一点?预先感谢您的帮助!以下某个分配的随机数
回答
最简单的企图是让
X = 1.0/random.random()
然而,random.random()
可以有一个零值,因此这可能导致除以零错误。该值不能为1.0,根据文档,所以使用
X = 1.0/(1.0 - random.random())
对于该分布,
镨[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){自从跑了DOM()是在[0,1均匀)和[1-1/K,1)是一个子区间}
= 1/K
(我希望能在这里使用MathJax!)当然,所有这些都假定k≥1,因为否则你的条件就没有意义了。我还假定X是一个连续的随机变量,从1到正无穷大。如果X是一个正整数(因此k也是一个正整数),那么就拿出我给出的公式的底线。
是的,这就是我需要的!非常感谢你! – Marco
你需要的是一个统一的随机数发生器来产生随机数。 然后,这些数字可被转化为一个分布(例如乘法)
https://docs.python.org/2/library/random.html
https://docs.python.org/3.5/library/random.html
这些可以产生随机数。 我没有得到的是你的分配。图形看起来如何?如果你有一个代表它的函数,用它和随机数相乘。
Rory结束了正确的答案,但他的数学证明它并不具有建设性—它没有显示如何得到答案,它只表明他的断言是正确的。以下使用基本的概率规则来推导答案。
Pr{X ≥ k} = 1 - Pr{X < k}
如果X
是连续随机变量,
Pr{X < k} = Pr{X ≤ k}
右手侧是累积分布函数F X(k)的定义,因此
Pr{X ≥ k} = 1 - F(k) = 1/k
F(k) = 1 - 1/k
然后by the inversion theorem我们可以设置等于U
,一个统一的(0,1)RV,并解决k:
U = 1 - 1/k
1 - U = 1/k
k = 1/(1 - U)
使用你的随机数发生器为U,你就完成了。正如Rory指出的那样,这只对k≥1有效,否则会导致CDF超出界限。
我看不清楚我的数学错了。我承认这很简短,只显示了一步,但那是因为我认为其余的对于那些知道概率的人来说是显而易见的。你激励我为我的平等添加更多步骤,但没有任何改变。你是否同意我目前的论述是正确的? (当然,我仍然遗漏了一些细节 - 我不想迂腐) –
@RoryDaulton你的第二行是以你对X应该是什么的断言为前提的,它并不遵循任何基本规则可能性。数学从那里出现,因为你的断言恰好是真实的,但是这并不能使断言事先有效。相比之下,我的推导遵循众所周知的概率规则,最终导致您声称的结果。 – pjs
显然,你的意思是你从期望的目标中得出表达式,而我表明我的表达满足目标。我们的工作方向相反,但这并不能使我的数学“无效”。有关这两种方法之间的区别的详细讨论,请参阅乔治波利亚的*如何解决它*。 –
- 1. 随机“摇动”一个数组来分配新的随机点
- 2. 随机分配数据
- 3. 按组分配随机数
- 4. 分配随机数字c#
- 5. 分配随机数变量
- 6. 如何生成随机数并随机分配给某些按钮?
- 7. 为某些满足某些条件的对象分配一个随机置换
- 8. 分配随机background.color对象随机ID
- 9. 随机分配的精灵
- 10. 随机分配的按钮
- 11. Beta分配的随机数发生器
- 12. 随机分配百分比,以每个词
- 13. 分配随机数到对象数组
- 14. 用C#随机数匹配一个经典的ASP随机数
- 15. 随机数生成并随机分配到3个数字在php中
- 16. 生成随机数直到某个
- 17. 并行随机分配
- 18. 随机分配给boost :: ptr_vector
- 19. 非随机加权分配
- 20. Python,随机整数和颜色分配
- 21. Java二维数组随机分配
- 22. DOM - 分配随机数来操作
- 23. 是否可以在Linux下分配某个扇区的内存?
- 24. 分配值,以随机的记录基于给定分布
- 25. Android - 以某种概率选择五个随机数
- 26. 如何为一个变量分配一个随机数?
- 27. 使用随机分配机会
- 28. 如何分配一个没有重叠的随机整数?
- 29. 将值分配给javascript中的多个随机数
- 30. 我该如何随机删除文件行的某个部分?
不完全确定你要做什么 – wjk2a1
嗨!我试图产生一个随机数X,它跟随我描述的分布。问题要求是根据分配选择X Pr X≥k = 1/k – Marco
是您正在查找的内容:http://stackoverflow.com/a/4266312/2348704 – oat