体育竞技模拟比赛

乒乓球比赛基本规则:

一方首先具有发球权,双方连续击打,球落地则该回合结束。如果输掉这一回合的是发球方,双方均不加分,但发球权要交给另一方。如果发球方赢得了这一回合,则发球方赢得1分,并继续拥有发球权。比赛总共进行n 局。一局比赛中,先得11分的一方为胜方,10平后,先多得2分得一方为胜方,胆大的淘汰赛采用七局四胜制,双打的淘汰赛和团体赛采用五局三胜制。

采用自顶向下的程序设计

步骤一:打印程序的介绍性信息

步骤二:获得运行需要的参数,即porbA,porbB,n

步骤三:利用球员A和B得能力值probA和probB,模拟n次比赛

步骤四:输出球员A和B得获胜比赛得场次及概率

def main():

  printIntro()##输出介绍信息

  probA,probB,n=getInputs()##获得用户输入,通过函数将语句及输入格式等细节封装或隐藏调用getInputs函数获取变量n,probA,probB的值。这个函数必须              作为主程序给返回这些值

  winsA,winsB=simNGames(n,probA,probB)##需要使用probA,probB模拟n场比赛,设计一个simNGames函数模拟比赛并返回结果

  printsummary(winsA,winsB)##输出结果

代码

# -*- coding: utf-8 -*-
"""
Created on Sat May 11 16:37:13 2019

@author: 18605
"""

#e15.1MatchAnalysis.py
from random import random
def printIntro():#打印程序的介绍性信息
    print("33号程序模拟两个选手A和B的乒乓球竞技比赛")
    print("33号程序运行需要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 simNGames(n,probA,probB):#利用A,B的的能力值模拟N场比赛
    winsA,winsB=0,0
    for i in range(n):
        pingpangA,pingpangB=simOneGame(probA,probB)#simOneGame函数用于模拟一场比赛
        if(pingpangA>pingpangB):#计数循环,记录每个成员赢了多少局比赛
            winsA+=1
        else:
            winsB+=1
    return winsA,winsB
def gameOver(a,b):#比赛结束的条件(再一局比赛中,先得11分者为胜方;10平后,先得2分的一方为胜方)
    if(a-b==2 and a>=10 and b>=10):
        return True
    elif(b-a==2 and a>=10 and b>=10):
        return True
    if a==11 or b==11:
        return True
    else:
        return False
def simOneGame(probA,probB):#用于模拟一场比赛
    pingpangA,pingpangB=0,0
    serving="A"#先由A发球
    while not gameOver(pingpangA,pingpangB):
        if(serving==‘A‘):
            if random() < probA:#通过随机数和概率确定发球放是否赢得比分(random()<prob)
                pingpangA += 1#若A赢得比分,则发球权不变
            else:
                serving=‘B‘#反之发球权给B
        else:
            if random() < probB:
                pingpangB += 1
            else:
                serving="A"
    return pingpangA,pingpangB
def printsummary(winsA,winsB):#输出A,B获胜的比赛场次及概率
    n=winsA+winsB
    print("竞技分析开始,共模拟{}场比赛".format(n))
    print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))
    print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))
def main():
    printIntro()
    probA,probB,n = getInputs()
    winsA,winsB=simNGames(n,probA,probB)
    printsummary(winsA,winsB)
main()

显示结果

原文地址:https://www.cnblogs.com/SGzhang/p/10854319.html

时间: 2024-08-27 14:32:43

体育竞技模拟比赛的相关文章

【python】羽毛球竞技模拟

一.体育竞技模拟分析简要介绍 体育竞技模拟分析,是个IPO问题,大致过程如下: 输入:两个球员(球员A和B)的能力概率,模拟比赛的场次 处理:模拟比赛过程 输出:球员A和B分别赢得球赛的概率 二.程序设计方法 程序设计有自顶向下和自底向上两种方法,此处重点介绍自顶向下. 自顶向下的基本思想:以一个总问题出发,试图把它表达为很多小问题组成的解决方案,再用同样的技术依次攻破每个小问题,最终问题变得非常小,也就是化整为零.然后把所有的碎片组合起来,就可以得到一个程序. 自顶向下设计: 1.顶层设计 体

羽毛球竞技模拟

一.体育竞技模拟分析简要介绍 体育竞技模拟分析,是个IPO问题,大致过程如下: 输入:两个球员(球员A和B)的能力概率,模拟比赛的场次 处理:模拟比赛过程 输出:球员A和B分别赢得球赛的概率 二.程序设计方法 程序设计有自顶向下和自底向上两种方法,此处重点介绍自顶向下. 自顶向下的基本思想:以一个总问题出发,试图把它表达为很多小问题组成的解决方案,再用同样的技术依次攻破每个小问题,最终问题变得非常小,也就是化整为零.然后把所有的碎片组合起来,就可以得到一个程序. 自顶向下设计: 1.顶层设计 体

体育竞技

一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ),最后输出模拟的结果( O ). P 简介:通过产生随机数得到每局比赛的难度,若小于能力值则表示赢得本局比赛,反之输掉本局比赛. 3. 规则简介: ① 每场比赛采用 5局3胜制. ② 前四局采用25分制,每个队只有在赢得至少25分,且同时超过对方2分时才胜一局. ③ 决胜局(第五局)采用15分制,先获得15分,且同时超过对方2分为胜. 4. 准备就绪,就差代

7.3模拟比赛

067.3  NOIP模拟赛 说明:本次考试3道题3个小时. 1.洛谷P1003 铺地毯==codevs1134 铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上. 地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号.注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖.

乒乓规则分析

乒乓竞技模拟比赛的规则为: 一局比赛:在一局比赛中,先得11分的一方为胜方:10平后,先多得2分的一方为胜方.一场比赛:单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜制. 该问题的IPO描述如下: 输入:两个球员:A和B的得分的概率,比赛的次数 处理:模拟比赛过程 输出:A和B分别赢的概率 自顶向下的设计如下: def main(): printIntro() probA,probB,n=getInputs() winsA,winsB=simNGames(n,probA,probB)

必威电竞传承体育精神!电子竞技只是打打游戏!

必威电竞yabo055点康亩说道,许多不玩游戏的人,都会感觉玩游戏只是一种娱乐而已,输赢不重要.当然,这说的并没有错,玩游戏只是一种娱乐.但是如果加上竞技,就会完全不同.首先是心态,如果说这个比赛不是游戏,而是各种体育类的比赛,那么每个人的想法是不是会改变呢.当然游戏也只是游戏,但为什么这么多人热衷于电子竞技呢?就是因为电子竞技在竞技的本身还带有娱乐性. 生活在这个世界上的每个人都会有自己的五感,而电子竞技则是从五感入手,为什么喜欢?因为画面感好,音乐听着舒服,因为心里不知道对手会干嘛,所以会紧

模拟美式橄榄球比赛数据(R)

获得和清洗数据: 1.从网络上抓取数据 year<-2013 url<-paste("http://sports.yahoo.com/nfl/stats/byteam?group=Offense&cat=Total&conference=NFL&year=season_",year,"&sort=530&old_category=Total&old_group=Offense") offense<-r

预测球队比赛成绩

1.体育竞技分析: 体育竞技分析:模拟N场比赛计算思维:抽象 + 自动化模拟:抽象比赛过程,自动模拟N场比赛,当N越大时,比赛结果分析越科学. 2.比赛规则:(以排球为例) 赛制规定: 排球前4局比赛采用25分制,每队只有赢得至少25分,并同时超过对方2分时 ,才胜1局.正式比赛采用5局3胜制,决胜局的比赛采用15分制,一队先得8分后,两队交换场区,按原位置顺序继续比赛到结束.在决胜局(第五局)之比赛,先获15分并领先对方2分为胜. 3.思维方式: 自顶向下即将一个复杂问题分解成几个问题,再细分

预测体育竞技比赛结果(新人练手)

一.模拟体育比赛分析 例:乒乓球设规则如下: 一局比赛中: 先赢得11分为胜 10平后  先多赢得2分为胜 单打淘汰赛 :7句4胜    代码如下 1 # -*- coding: utf-8 -*- 2 """ 3 Created on Wed May 15 11:38:02 2019 4 5 @author: lenovo 6 """ 7 8 import random 9 import math 10 def printIntro(): 11