一、定义
二、实例
from random import random
def main():
printIntro()
probA, probB, n = getInputs()
winsA, winsB, = simNGames(n,probA,probB)
printSummary(winsA,winsB)
def printIntro():
print('这个程序模拟两个选手的某种竞赛')
print('A,B的能力值在0到1之间')
def getInputs():
a = eval(input('请输入A的能力值:'))
b = eval(input('请输入B的能力值:'))
n = eval(input('请输入模拟场次:'))
return a, b, n
def printSummary(winsA,winsB):
n = winsB + winsA
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() < 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
main()
运行结果:
这个程序模拟两个选手的某种竞赛
A,B的能力值在0到1之间
请输入A的能力值:0.45
请输入B的能力值:0.50
请输入模拟场次:1000
经济分析开始,共模拟1000场比赛
选手A获胜350场比赛,占比35.0%
选手B获胜650场比赛,占比65.0%