首页 > 其他分享 >模拟体育竞技分析--乒乓球比赛规则

模拟体育竞技分析--乒乓球比赛规则

时间:2023-12-17 21:58:36浏览次数:31  
标签:winsB winsA scoreA scoreB -- probB 比赛规则 probA 体育竞技

def printIntro():
print("这个程序模拟两个选手A和B的乒乓球比赛")
print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
print("学号后两位数字:32")

def printInputs():
a = eval(input("请输入选手A的能力值(0-1): "))
b = eval(input("请输入选手B的能力值(0-1): "))
n = eval(input("模拟比赛的场次: "))
return a, b, n

def simNGames(n, probA, probB):
winsA, winsB = 0, 0
for i in range(n):
for j in range(7):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA += 1
else:
winsB += 1
return winsA,winsB



def simOneGame(probA, probB):
scoreA, scoreB = 0, 0
serving = "A"
while not gameOver(scoreA, scoreB):
if scoreA==10 and scoreB==10:
return(simOneGame2(probA,probB))
if serving == "A":
if random() < probA:
scoreA += 1
else:
serving="B"
else:
if random() < probB:
scoreB += 1
else:
serving="A"
return scoreA, scoreB

def simOneGame2(probA,probB):
scoreA,scoreB=10,10
serving = "A"
while not gameOver2(scoreA, scoreB):
if serving == "A":
if random() < probA:
scoreA += 1
else:
serving="B"
else:
if random() < probB:
scoreB += 1
else:
serving="A"
return scoreA, scoreB

def gameOver(a,b):
return a==11 or b==11
def gameOver2(a,b):
if abs((a-b))>=2:
return a,b

def printSummary(winsA, winsB):
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 = printInputs()
winsA, winsB = simNGames(n, probA, probB)
printSummary(winsA, winsB)

main()

标签:winsB,winsA,scoreA,scoreB,--,probB,比赛规则,probA,体育竞技
From: https://www.cnblogs.com/zlhkl/p/17909918.html

相关文章

  • 实验六 模板类,文件io和异常处理
    实验任务4#pragmaonce#include<iostream>#include<stdexcept>usingstd::cout;usingstd::endl;template<typenameT>classVector{public://构造函数,默认大小为0Vector(intn=0):size(n),data(newT[n]){if(n<0)......
  • 动态规划进阶
    数位DP常见的模板:询问\(l\simr\)中有多少个满足给定条件的数,\(1\lel\ler\le10^{18}\)。这种问题,数位DP可以做到\(O(\logv)\)级别,其中\(v\)是\(l,r\)的值域。思路直接枚举会枚举大量不可能满足条件的数,可以从数位入手。数位DP的算法流程如下:几个定义:\(len(......
  • 关于查看ubuntu下安装的字体
    importmatplotlib.font_managerasfm#获取系统上的所有可用字体font_list=fm.fontManager.ttflist#打印字体列表forfontinfont_list:print(font.name) 这将打印出系统上安装的所有可用字体的名称。如果你只想查看中文字体,可以使用以下代码:importmatplotlib.fo......
  • 董宇辉小作文事件给我们的血泪教训【江湖险恶】
    相信大家这几天被董宇辉事件刷屏了,透彻的说就是几个关键词:功高盖主去董宇辉卸磨杀驴飞鸟尽良弓藏大家都知道新东方的转型成功(打着助农的旗号),董宇辉发挥了巨大作用,很多人也是通过董宇辉才认识了东方甄选,让东方甄选一跃成为抖音前三名的带货直播间。就在直播间蒸蒸日上的时......
  • Pandas数据分析实战(Pandas in action)第2章 Series 对象
    Pandas数据分析实战第2章SeriesSeries是Pandas的核心数据结构之一,是一个用于同构数据的一维标记数组。Series可以设置索引,没有设置的话,Pandas会设置默认的索引,从0开始的线性索引。创建一个Series对象importpandasaspdpd.Series()Series([],dtype:objec......
  • 兰馨五棵松20211110个人贡献
    我完成的工作:主要负责前端设计,参与了部分数据库整合和文本编写。我们小组的相关代码链接:https://gitee.com/an-jiran/dzgwxt/tree/master/(撰写代码时未统计代码行数)我们小组总共发布14篇博客,我贡献了其中5篇,相关链接如下:https://www.cnblogs.com/lanxin5kesong/p/17780874.ht......
  • 2023-2024-1 20231414 《计算机基础与程序设计》第十二周学习总结
    学期(2023-2024-1)学号(20231414)《计算机基础与程序设计》第十二周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2023-2024-1计算机基础与程序设计第十二周作业)这个作业的目标<学习《C......
  • 逆向通达信Level-2 续十 (trace脱壳)
    本篇演示两图1. trace 脱壳,你看到了几成指令是混淆的。2. trace 脱壳过程中帮助ida 定位脱壳代码片段。ida 不能定位的代码片段,通过trace来发现。 逆向通达信Level-2续十(trace脱壳)逆向通达信Level-2续九(无帐号打开itrend研究版)逆向通达信Level-2续八(Ba......
  • Windows 注册表取证 常用分析项
    Windows注册表取证常用分析项注册表主要单元:SYSTEM:对应的注册表分支为HKEY_LOCAL_MACHINE\SYSTEM,对应的存储文件是\Windows\System32\config\SYSTEM,其作用是存储计算机硬件和系统的信息。NTUSER.DAT:对应的注册表分支是HKEY_CURRENT_USER,存储在用户目录下,与其他注册表文件是分......
  • 2022年个人总结
    参与开源项目:在2022年,我积极参与维护了一个开源项目:春松客服。我在项目中主要负责技术讨论群的建设,包括回答用户的各种提问,解决用户的部署编译问题。与其他开发者的合作,我们成功地将项目推向了一个新的阶段。通过参与开源项目的建设,我认识了一群志同道合的伙伴,了解了开源项目的......