1、将体育比赛分析分解为以下几个小步骤:
1.1 打印流程介绍
1.2 获取程序运行参数:probA(A的能力值)、probB(B的能力值)、n(游戏编号)
1.3 用玩家AB的能力值模拟n场比赛
1.4 输出玩家AB获胜的游戏次数和概率
2.将每一步定义为一个函数来实现
3.首先对代码进行初步介绍:
函数名
功能说明
()
打印程序介绍信息
()
获取用户输入的参数
(n, 概率 A, 概率 B)
模拟n场比赛
(概率Ap排球第1-4局得多少分才胜一局,概率B)
采用五局三胜制模拟一场比赛p排球第1-4局得多少分才胜一局p排球第1-4局得多少分才胜一局,包括五轮比赛
(N、概率 A、概率 B)
模拟游戏
(N, , )
定义游戏的结束条件
(n, 获胜 A, 获胜 B)
输出模拟比赛的结果
4.仿真分析简介:
排球训练营
1.简介:模拟两支不同球队之间的排球比赛。
2.模拟原理:通过输入各自的能力值(Ⅰ),模拟游戏的进度(P),最后输出模拟结果(O)。
P介绍:每场比赛的难度都是通过生成随机数得到的。 如果小于能力值,则意味着赢得比赛,否则意味着输掉比赛。
3、规则介绍:
① 每场比赛均采用五局两胜制。
②前四场比赛采用25分制。 每支球队只有赢得至少25分并超过对手2分才能赢得一场比赛。
③决胜局(第五局)采用15分制。 先得15分并同时领先对手2分者获胜。
5.下一步是插入代码:
from math import fabs
from random import random
def printInfo():
print("产品名称:排球竞技模拟分析器")
print("产品概述:通过输入2个队伍A和B的能力值(0到1之间的小数表示),能够模拟多次2个队伍A和B的排球竞技比赛,从而得出各自的胜率!")
print("产品作者:ysd将暮未暮")
def getInputs():
probA=eval(input("请输入队伍A的能力值(0-1):"))
probB=eval(input("请输入队伍B的能力值(0-1):"))
n=eval(input("请输入需要模拟比赛的场次数:"))
return probA,probB,n
def simNGames(n,probA,probB):
winsA,winsB=0,0
for _ in range(n):
winsA,winsB=simOneGame(probA,probB)
if winsA>winsB:
winsA+=1
else:
winsB+=1
return winsA,winsB
def simOneGame(probA,probB):
N=1
winsA,winsB=0,0
for _ in range(5):
scoreA,scoreB=simAGame(N,probA,probB)
if scoreA>scoreB:
winsA+=1
else:
winsB+=1
N+=1
if winsA==3 or winsB==3:
break
return winsA,winsB
def simAGame(N,probA,probB):
scoreA,scoreB=0,0
serving='A'
while not GameOver(N,scoreA,scoreB):
if serving=='A':
if random()>probA:
scoreB+=1
serving='B'
else:
scoreA+=1
if serving=='B':
if random()>probB:
scoreA+=1
serving='A'
else:
scoreB+=1
return scoreA,scoreB
def GameOver(N,scoreA,scoreB):
if N<=4:
return(scoreA>=25 and scoreB>=25 and abs(scoreA-scoreB)>=2)
else:
return(scoreA>=15 and abs(scoreA-scoreB)>=2) or (scoreB>=15 and abs(scoreA-scoreB)>=2)
def printResult(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)
printResult(n,winsA,winsB)
main()
6. 获取运行结果:
到这里就结束了
本文标签: p排球第1-4局得多少分才胜一局
上一条:法国赛郑泫连丢两盘奥利沃生涯首冠