paiqiu

Posted luorunsb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了paiqiu相关的知识,希望对你有一定的参考价值。

排球训练营

1. 简介: 模拟不同的两个队伍进行排球的模拟比赛。

2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ),最后输出模拟的结果( O )。

P 简介:通过产生随机数得到每局比赛的难度,若小于能力值则表示赢得本局比赛,反之输掉本局比赛。

3. 规则简介:

① 每场比赛采用 5局3胜制。

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from random import random
 
def printInfo():
    print("产品名称: 排球竞技模拟分析器")
    print("产品概述: 通过输入2个队伍A和B的能力值(0到1之间的小数表示),能够模拟多次2个队伍A和B的排球竞技比赛,从而得出各自的胜率!")
    print("产品作者: 渣渣灿 - 34\\n")
 
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):
        winA, winB = simOneGame(probA, probB)
        if winA > winB:
            winsA += 1
        else:
            winsB += 1
    return winsA, winsB
 
def simOneGame(probA, probB):
    N = 1
    winA, winB = 0, 0
    for _ in range(5):
        scoreA, scoreB = simAGame(N, probA, probB)
        if scoreA > scoreB:
            winA += 1
        else:
                winB += 1
                N += 1
        if winA == 3 or winB == 3:
            break
    return winA, winB
 
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获胜{}场比赛,占比{:.2f}".format(winsA,winsA/n))
    print(">>>队伍B获胜{}场比赛,占比{:.2f}".format(winsB,winsB/n))
 
if __name__ == "__main__":
    printInfo()
    probA, probB, n = getInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printResult(n, winsA, winsB)

  

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

4. 准备就绪,就差代码来实现了

插入代码之前,先对代码做个简单的介绍:

函数名称 函数说明
printInfo() 打印程序的介绍信息
getInputs() 获得用户输入的参数
simNGames(n, probA, probB) 模拟n场比赛
simOneGame(probA, probB) 模拟一场比赛,包括五局,采取五局三胜制
simAGame(N, probA, probB) 模拟一局比赛
GameOver(N, scoreA, scoreB) 定义一局比赛的结束条件
printResult(n, winsA, winsB)

输出模拟比赛的结果

技术图片

以上是关于paiqiu的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数