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!")

  • 相关阅读:
    SQL手工注入方法
    wireshark常见分析
    JOY靶机
    GoldenEye-v1靶机
    homeless靶机
    注入
    DC-9靶机
    你哈
    数据库常用数据类型
    数据表的基本操作
  • 原文地址:https://www.cnblogs.com/DCG-XC/p/14019885.html
Copyright © 2011-2022 走看看