• 乒乓球比赛模拟


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

  • 相关阅读:
    disruptor架构三 使用场景 使用WorkHandler和BatchEventProcessor辅助创建消费者
    disruptor架构二
    disruptor架构一
    线程池基础二
    线程池基础一
    多线程集成设计模式--MasterWorker模式讲解(一)
    多线程集成设计模式--future模式
    线程基础9-quene讲解
    线程基础8-quene讲解
    hdu3613 Best Reward
  • 原文地址:https://www.cnblogs.com/DCG-XC/p/14019885.html
Copyright © 2020-2023  润新知