zoukankan      html  css  js  c++  java
  • 乒乓球比赛模拟

    from random import random
    def printInfo():
        print("这个程序模拟两个选手A和B的乒乓比赛")
        print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
    def getInputs():
        a = eval(input("请输入选手A的能力值(0-1): "))
        b = eval(input("请输入选手B的能力值(0-1): "))
        n = eval(input("模拟比赛的场次: "))
        return a, b, n
    def simNGames(n, probA, probB):
        winsA, winsB = 0, 0
        for i in range(n):
            scoreA, scoreB = simOneGame(probA, probB)
            if scoreA > scoreB:
                winsA += 1
            else:
                winsB += 1
        return winsA, winsB
    def gameOver(a,b):
        if a>=10 and b>=10:
             if abs(a-b)==2:
                 return 1
        elif a<10 and b<10:
             if a==11 or b==11:
                 return 1
        else:
             return 0
    def simOneGame(probA,probB):
        scoreA,scoreB=0,0
        serving="A"
        while not gameOver(scoreA,scoreB):
             if serving=="A":
                 if random()<probA:
                     scoreA+=1
                 else:
                     serving="B"
             else:
                 if random()<probB:
                     scoreB+=1
                 else:
                     serving="A"
             return scoreA,scoreB
    def printSummary(winsA,winsB):
         n=winsA+winsB
         print("竞技分析开始,一共模拟{}场比赛".format(n))
         print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))
         print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))
    def main():
        printInfo()
        probA,probB,n=getInputs()
        winsA,winsB=simNGames(n,probA,probB)
        printSummary(winsA,winsB)
    main()
    python3: input("please input any key to exit!")

  • 相关阅读:
    MySQL企业常用集群图解
    MySQL常见错误类型
    MySQL 数据库增量数据恢复案例
    异地备份同步校验脚本
    python 自动化之路 day 面向对象基础
    Docker 入门
    awk知识点总结
    Linux文件管理类命令及命令别名
    Linux重定向
    Linux进程管理
  • 原文地址:https://www.cnblogs.com/DCG-XC/p/14019885.html
Copyright © 2011-2022 走看看