panqiaoyan

题目:赛制规定:

前四局比赛采用25分制,每个队只有赢得至少25分,并同时超过对方3分时,才胜一局。

正式比赛采用5局3胜制,决胜局的比赛采用15分制,一队先得8分后,两队交换场区,按原位置顺序比赛到结束。

在决胜局(第五局)之比赛,先获15分并领先对方2分为胜。

 

该问题的IPO描述如下:
输入:两个球员(球员A和球员B)的能力概率,模拟比赛的场次

处理:模拟比赛过程

输出:球员A和B分别赢得球赛的概率

 

程序如下:

# -*- encoding:utf-8 -*-

\'\'\'

模拟排球竞技

@author: bpf

\'\'\'

# 比赛规则:

# 1. 采用5局3胜制

# 2. 前四局采用25分制,每个队只有在赢得至少25分,且同时超过对方2分时才胜一局

# 3. 决胜局(第五局)采用15分制,先获得15分,且同时超过对方2分为胜

 

from random import random

def printInfo():

\'\'\'

打印程序的功能信息

\'\'\'

print("\t\t这个程序模拟2个队伍A和B的排球竞技比赛!")

print("\t 程序运行需要队伍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 NGames(n, probA, probB):

\'\'\'

模拟n场比赛

\'\'\'

winA, winB = 0, 0

for _ in range(n):

scoreA, scoreB = OneGame(probA, probB)

if scoreA > scoreB:

winA += 1

else:

winB += 1

return winA, winB

 

def OneGame(probA, probB):

\'\'\'

模拟一场比赛,包括五局

\'\'\'

scoreA, scoreB, N = 0, 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

N += 1

return scoreA, scoreB

 

def GameOver(N, a, b):

\'\'\'

定义赢得一局的条件

N: 当前局次(第五局为决胜局)

\'\'\'

if N <= 4:

return (a>=25 and b>=25 and abs(a-b)>=2)

else:

return (a>=15 and b>=15 and abs(a-b)>=2)

 

def printResult(n, winA, winB):

print("竞技分析开始,共模拟{}场比赛".format(n))

print("队伍A获胜{}场比赛,占比{:0.1%}".format(winA,winA/n))

print("队伍B获胜{}场比赛,占比{:0.1%}".format(winB,winB/n))

 

if __name__ == "__main__":

printInfo()

probA, probB, n = getInputs()

winA, winB = NGames(n, probA, probB)

printResult(n, winA, winB)

 

输出结果:

这个程序模拟两个选手A和B的某种竞技比赛

程序运行需要A和B的能力值(以0到1之间的小数表示)

 

请输入选手A的能力值:0.45

 

请输入选手B的能力值:0.6

 

模拟比赛的场次:4

竞技分析开始,共模拟5场比赛

选手A获胜1场比赛,占比20.0%

选手B获胜4场比赛,占比80.0%

分类:

技术点:

相关文章:

  • 2021-11-12
  • 2021-12-22
  • 2021-12-18
  • 2021-12-19
  • 2022-12-23
  • 2021-11-12
  • 2022-01-09
  • 2021-11-12
猜你喜欢
  • 2021-10-11
  • 2022-02-08
相关资源
相似解决方案