zoukankan      html  css  js  c++  java
  • 排球比赛规则

    题目:赛制规定:

    前四局比赛采用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(" 这个程序模拟2个队伍A和B的排球竞技比赛!")

    print(" 程序运行需要队伍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%

  • 相关阅读:
    MongoDB Http Interface
    从python2.7和python3.0的语法差异总结
    从python2.7和python3.0的语法差异总结
    MongoDB聚合aggregate
    MongoDB聚合aggregate
    Windows 有没有办法查看文件被哪个进程占用
    Windows 有没有办法查看文件被哪个进程占用
    开启mongodb 的web
    开启mongodb 的web
    MongoDB基本命令操作
  • 原文地址:https://www.cnblogs.com/panqiaoyan/p/10855113.html
Copyright © 2011-2022 走看看