该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
from random import *
def main():
printIntro()
probA, probB, n = getInputs()
winsA, winsB = simNGames(n, probA, probB)
printSummary(winsA, winsB
def printIntro():
print('背景')
def getInputs():
a = eval(input('what is the prob.player A wins?'))
b = eval(input('what is the prob.player B wins?'))
n = eval(input('How many games to simulate?'))
return a, b, n
def simNGames(n, probA, probB):
winsA = 0
winsB = 0
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA += 1
else:
winsB += 1
return winsA, winsB
def printSummary(winsA, winsB):
n = winsA + winsB
print('\nGames simulated:%d' % n)
print('Wins for A:{0}({1:0.1%})'.format(winsA, winsA / n))
print('Wins for B:{0}({1:0.1%})'.format(winsB, winsB / n)
def simOneGame(probA, probB):
scoreA = 0
scoreB = 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 gameOver(a, b):
return a == 15 or b == 15
if __name__ == '__main__':
main()
运行结果就是:只显示模拟一次的比赛,不管我n输入多少都一样