首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -6个或更多Tails/Head代码的概率

Python -6个或更多Tails/Head代码的概率
EN

Stack Overflow用户
提问于 2021-10-21 16:56:21
回答 2查看 73关注 0票数 0

我让我的comp sci的学生写一段代码,模拟抛硬币100次,并将结果存储在列表中。寻找6个正面(或更多)或6个反面(或更多)的条纹。如果你发现了一个连胜,那么就认为这次试验是成功的。重复这个实验一万次。使用此选项可确定找到6个正面或6个反面的条纹的概率。

理论上,这个概率应该是80%左右。

编辑:有可能我曲解了这个理论概率。我在这里找到了这个概率:https://math.stackexchange.com/questions/2736117/what-is-the-probability-of-getting-6-or-more-heads-or-tails-in-a-row-after-flipp

我的代码给出了一个大约54%的概率,也就是连续得到6的概率。但是,如果我连续获得7、8、9或更多,我的代码应该会将其标记为成功,对吗?

我知道我的代码检查6的牛排,但是如果有7,8,9,...这仍将标志着它的成功。我一定漏掉了什么.

附件是我的代码:

代码语言:javascript
复制
import random
numberofstreaks = 0
for experimentnumber in range(10000):
    result = []
    for i in range(100):
        flip = random.randint(0,1)
        result.append(flip)
    
    for i in range(len(result)-6):
        if result[i:i+6] == ([0,0,0,0,0,0] or [1,1,1,1,1,1]):
            numberofstreaks += 1
            break
print(numberofstreaks)
print('Chance of steak:',(numberofstreaks/100))

注意:他们目前正在学习列表,这就是为什么他们的代码必须包含列表的用法。

提前感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-21 18:09:18

稍微更正一下:

代码语言:javascript
复制
import random
numberofstreaks = 0
for experimentnumber in range(10000):
    result = []
    for i in range(100):
        flip = random.randint(0,1)
        result.append(flip)
    
    for i in range(len(result)-6):
        if result[i:i+6] == [0,0,0,0,0,0] or result[i: i+6] == [1,1,1,1,1,1]:
            numberofstreaks += 1
            break
print(numberofstreaks)
print('Chance of steak:',(numberofstreaks/100))

答案现在是80.22%。如果A不能被推断为false,则(A or B)返回A,否则返回B。所有0s的列表不是False。所以你只是在检查0s的痕迹。

票数 0
EN

Stack Overflow用户

发布于 2021-10-21 17:11:11

据我所知,你的代码不能解释在一个给定的100次抛硬币中有多个条纹。一旦发现条纹,你可以通过将i移位6位来做到这一点,这样它就不会将>6的条纹算作多条条纹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69665965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档