首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动化无聊的东西-硬币翻转条纹-如何优化我的答案?

自动化无聊的东西-硬币翻转条纹-如何优化我的答案?
EN

Stack Overflow用户
提问于 2022-02-10 15:45:44
回答 4查看 715关注 0票数 0

我一直在自动化这些无聊的东西,并且正在尝试练习的问题。我想出了这个项目的解决方案清单上的章节-硬币条纹。

这个问题的目标是:“”对于这个练习,我们将尝试做一个实验。如果你抛硬币100次,在每个头上写一个“H”,为每条尾巴写一个“T”,你会创建一个类似于“T-T”的列表。如果你让一个人制造100个随机的硬币翻转,你可能会得到像“H T”这样的交替的头尾结果,这看起来是随机的(对人类而言),但不是数学上的随机。一个人几乎不会连续写下六个正面或六个尾巴的条纹,即使这很有可能发生在真正随机的硬币翻转中。可以预见,人类不善于随机应变。

编写一个程序,找出在随机生成的正面和反面列表中,一个由6个正面或6个尾组成的条纹出现的频率。您的程序将实验分为两部分:第一部分生成随机选择的“正面”和“尾部”值的列表,第二部分检查其中是否有条纹。把所有这些代码放在一个循环中,重复实验10,000次,这样我们就可以知道硬币翻转中有多少百分比包含了连续六个正面或反面的条纹。作为提示,函数调用random.randint(0,1)将返回0值50%的时间和1值的其他50%的时间。这是我的密码。

代码语言:javascript
复制
numberOfStreaks = 0
experiment = []
n = 0
for experimentNumber in range(1000):
    experimentNumber = experimentNumber + 1
    for test in range(100):
        selector = random.randint(0,1)
        if selector == 0:
            experiment = experiment + ['H']
        elif selector == 1:
            experiment = experiment + ['T']
    
    for n in range(94):
        if experiment[n:n+6] == ['T', 'T', 'T', 'T', 'T', 'T']:
            numberOfStreaks = numberOfStreaks + 1
        elif experiment[n:n+6] == ['H', 'H', 'H', 'H', 'H', 'H']:
            numberOfStreaks = numberOfStreaks + 1
        else:
            numberOfStreaks = numberOfStreaks
print((numberOfStreaks / 100000) * 100)

我只能在1000个实验中有效地运行这个解决方案,书上说要运行10000,但要花费太长时间。我认为这源于我想出的算法的缺点。

如何使这个算法更有效?

EN

Stack Overflow用户

发布于 2022-02-10 16:07:44

您可以通过只有一个for循环来简化它,这也消除了添加到列表中的需要,并且大大加快了速度。(10000在<1秒)

代码语言:javascript
复制
import random

numberOfStreaks = 0
experiment = []
n = 0
for experimentNumber in range(1000):
    heads=0
    tails=0
    
    for test in range(100):
        
        if random.randint(0,1):
            heads += 1
            tails = 0
        else:
            tails += 1
            heads = 0

        if heads >= 6 or tails >= 6:
            numberOfStreaks += 1
            
print((numberOfStreaks / 100000) * 100)
票数 0
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71068072

复制
相关文章

相似问题

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