Python学习日志之数列作业2

在本练习中,我们将尝试做一个实验。如果你掷硬币100次,并在每次正面时写
下“H”,在每次反面时写下“T”,就会创建一个看起来像“T T T T T H H H H T T”这样的列
表。如果你要求一个人进行100次随机掷硬币,你可能会得到交替正反的结果,例如“H T
H T H H T H T T T”,(对人类而言)这看起来是随机的,但在数学上并不是随机的。即
使极有可能发生在真正随机的硬币翻转中,人类也几乎永远不会写下连续6个正面或6个反
面。可以预见,人类在随机性方面会很糟糕。
编写一个程序,查找随机生成的正面和反面列表中出现连续6个正面或6个反面的频
率。你的程序将实验分为两部分:第一部分生成随机选择的“正面”和“反面”值的列表,第
二部分检查其中是否有连胜。将所有这些代码放入一个循环中,重复该实验10 000次,这
样我们就可以找出掷硬币中包含连续6个正面或反面的百分比。作为提示,函数调
用random.randint(0,1)将在50%的时间返回0值,在另外50%的时间返回1值。

import random
numberlist = []
number100T = 0
number100F = 0
numberOfStreaksT = 0
numberOfStreaksF = 0
for experimentNumber in range(10000):
    #10000次数列
    if random.randint(0,1) == 0 :
        numberlist.append('F')
    else :
        numberlist.append('T')
    #判断这个数是不是T
    if numberlist[experimentNumber] == 'T' :
        if number100F == 0  : #当F计数为0的时候代表前一个数是T
            number100T += 1
        else :
            number100F = 0
            number100T += 1
        if number100T == 6 :
            numberOfStreaksT += 1
            number100T = 0

    if numberlist[experimentNumber] == 'F':

        if number100T == 0 :
            number100F += 1
        else :
            number100T = 0
            number100F += 1
        if number100F == 6 :
            numberOfStreaksF += 1
            number100F = 0
print(numberOfStreaksF)
print(numberOfStreaksT)
print('Chance of streak: %s%%' % (numberOfStreaksF/ 10000))
print('Chance of streak: %s%%' % (numberOfStreaksT/ 10000))

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值