【问题标题】:Calculating probability in Python在 Python 中计算概率
【发布时间】:2016-01-23 20:36:09
【问题描述】:

我对 python 有点陌生,我会很感激你的帮助 :) 我有以下代码:

import random
x = 1
def round():
    return random.randint(1,6)
for i in range(8):
    result = round()
    if result > x:
        x = result
if x == 5:
print "True"

目标是计算程序打印“真”的概率,这个概率应该是0.193。 什么是最有效且效率最高的方法?我想了一些与伯努利分布有关的事情并尝试了,但我的结果是错误的。 谢谢!

【问题讨论】:

  • 我不知道为什么人们在没有至少给出一些解释的情况下投反对票。显然这个人是新人,不知道提出问题的最佳方式,但我们应该在这里帮助人们学习,而不是因为他们是新人而惩罚他们。
  • Sunz,如果你澄清一些事情,人们会更容易帮助你。你想在这里完成什么?每次随机获得数字 5 时,您是否都尝试打印出“True”?如果数字 5 至少被随机抽样一次,则打印出“真”?计算运行抽样实验后得到至少一个 5 的经验概率?或者得到至少一个 5 的真实概率?
  • 我很高兴现在反对票已被抵消 :)
  • 感谢 ronrest :) 我尝试计算在程序的一次性运行中打印“True”的机会。 Hugh Bothwell 给了我想要的答案。

标签: python probability


【解决方案1】:

第一步是意识到你的程序简化为

x = max(randint(1,6) for _ in range(8))

那么x == 5 的几率是

prob(nothing higher than 5) - prob(nothing higher than 4)

这是

(5/6)**8 - (4/6)**8   # => 0.19354959705075458

【讨论】:

  • 谢谢伙计,现在看起来很容易理解了!我必须计算它才能将它用于我正在处理的更复杂的代码。
【解决方案2】:

如果我的问题是正确的,那么您想了解randomint 是如何实际生成数字(分布)的。看起来它以统一的方式生成它们(您在区间内获得任何数字的机会大致相同)。

更多详情请见here、here,甚至更多“nerdish”在这里。

因此,Hugh Bothwell 的答案是正确的(这是基于你得到的数字的均匀分布)。

【讨论】:

    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2021-04-11
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多