import random def printIntro(): print("moniA and B") def getInputs(): a = eval(input("please input A socre(0~1):")) b = eval(input("please input B socre(0~1):")) n = eval(input("please input the number of sinNGames:")) return a,b,n 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 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 simOneGame(probA,probB): scoreA,scoreB = 0,0 serving = "A" while not gameOver(scoreA,scoreB): if serving == "A": if random.random() < probA: scoreA += 1 else: serving = "B" else: if random.random() < probB: scoreB += 1 else: serving = "A" return scoreA,scoreB def gameOver(a,b): return a == 15 or b == 15 def main(): printIntro() probA,probB,n = getInputs() winsA,winsB = simNGames(n,probA,probB) printSummary(winsA,winsB) main()
原文:https://www.cnblogs.com/huangzhanhui/p/12743914.html