首页 > 其他分享 >模拟体育竞技

模拟体育竞技

时间:2023-12-17 23:33:06浏览次数:32  
标签:winsB winsA scoreA scoreB probB probA 体育竞技 模拟

# 打印程序介绍信息
def printIntro():
print("学号40")
print("这是乒乓球个人赛模拟程序:")


# 获得程序运行参数
def getInputs():
a = eval(input("请输入队伍A的能力值(0-1): "))
b = eval(input("请输入队伍B的能力值(0-1): "))
n = eval(input("模拟比赛的场次: "))
return a, b, n


# 进行N场比赛
def simNGames(n, probA, probB):
winsA, winsB = 0, 0
for i in range(n):
for j in range(7): # 进行7局4胜的比赛
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA += 1
else:
winsB += 1
return winsA, winsB


# 正常比赛结束
def gameOver(a, b):
return a == 11 or b == 11


def gameOver2(a, b): # 进行抢12比赛结束
return a == 12 or b == 12


# 进行一场比赛
def simOneGame(probA, probB):
scoreA, scoreB = 0, 0 # 初始化AB的得分
serving = "A"
while not gameOver(scoreA, scoreB): # 用while循环来执行比赛
if scoreA == 10 and scoreB == 10:
return(simtwoGame2(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 simtwoGame2(probA,probB):
scoreA, scoreB=10, 10
serving = "A" # 假如先让队伍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 printSummary(winsA, winsB):
n = winsA + winsB
print("竞技分析开始,共模拟{}场比赛".format(n//7))
print("A获胜{}场比赛,占比{:0.1%}".format(winsA//7+1, winsA/n))
print("B获胜{}场比赛,占比{:0.1%}".format(winsB//7, winsB/n))


def main():
printIntro()
probA, probB, n = getInputs()
winsA, winsB = simNGames(n, probA, probB)
printSummary(winsA, winsB)


main()

 

#先到100分获胜
from random import random
def printIntro():
print("by 40")
print("这个程序模拟两个队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 simNGames(n, probA, probB):
winsA, winsB = 0, 0
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA += 1
else:
winsB += 1
return winsA, winsB
def gameOver(a,b):
return a==100 or b==100
def simOneGame(probA, probB):
scoreA, scoreB = 0, 0
serving = "A"
while not gameOver(scoreA, scoreB):
if serving == "A":
if random() < probA:
scoreA += 1
else:
scoreB += 1
else:
if random() < probB:
scoreB += 1
else:
scoreA += 1
return scoreA, scoreB
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 = getInputs()
winsA, winsB = simNGames(n, probA, probB)
printSummary(winsA, winsB)
main()

 

用pyinstaller打包程序

 

 

标签:winsB,winsA,scoreA,scoreB,probB,probA,体育竞技,模拟
From: https://www.cnblogs.com/haishiyigeren/p/17910105.html

相关文章

  • 体育竞技
     1)模拟体育竞技分析:(不同学号选做不同题目,必做题)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬......
  • 模拟体育竞技分析--乒乓球比赛规则
    defprintIntro():print("这个程序模拟两个选手A和B的乒乓球比赛")print("程序运行需要A和B的能力值(以0到1之间的小数表示)")print("学号后两位数字:32")defprintInputs():a=eval(input("请输入选手A的能力值(0-1):"))b=eval(input("请输入选手B的能力......
  • 排球比赛模拟
    代码importrandomdefprint_intro():print("排球比赛模拟程序")print("-------------------------------")definput_teams():team1_ability=float(input("请输入第一个球队的能力值:"))team2_ability=float(input("请输入第二个球队的能力值:"......
  • 模拟比特洪流协议
    一、实验目标      首先将一个图形文件划分成指定大小的数据块。在一台主机下模拟五个应用进程,其中有四个peer,分别为peer1,peer2,peer3,peer4,还有一个tracker。将上述的图片数据块按要求分配到三个节点(peer1,peer2,peer3)上,peer4从tracker上获取三个节点的数据块信息。最......
  • 18.adb 模拟按键操作
    adb模拟手机按键1、打开【指针位置】设置2、执行 adbshellinput 命令模拟点击事件adbshelltapx坐标y坐标模拟输入事件adbshellinputtext<输入内容>模拟滑动事件adbshellswipe<起点x><起点y><终点x><终点y><滑动时长>模拟手机按键返回键:adbshell......
  • 2023.12.16模拟赛总结
    这次比赛打的好,但又不好,200pts,rank4,但原本可以360pts的T1每一条边减去端点贡献,最小生成树即可T2从小到大枚举花瓣数,然后对于每一列记录前四大的,防止不能转移,然后直接跑即可赛时打了一个线段树,被卡常+卡空间,hahahaT3暴力,先分解质因数,由于\(\varphi(p^k)=(p-1)p^{k-1}\),那么......
  • 技术美术|游戏中的流体模拟(Fluid Simulation)
    【USparkle专栏】如果你深怀绝技,爱“搞点研究”,乐于分享也博采众长,我们期待你的加入,让智慧的火花碰撞交织,让知识的传递生生不息!一、闲聊最近一直在研究流体模拟,很神奇的一个东西,好在网上有很多参考资料,研究过程不算太困难。分享下最近一段时间的学习心得。二、效果演示 ......
  • 模拟适配器设计方案:360-基于10G以太网的模拟适配器
    基于10G以太网的模拟适配器一、产品概述   基于10G以太网的模拟适配器是一款分布式高速数据采集系统,实现多路AD的数据采集,并通过10G以太网光纤远距离传输到存储计算服务器,计算控制指令能通过光纤返回给数据卡进行IO信号控制。产品基于10G太网络,可迅速构建起......
  • AD采集卡设计方案:630-基于PCIe的高速模拟AD采集卡
    基于PCIe的高速模拟AD采集卡一、产品概述   基于PCIe的一款分布式高速数据采集系统,实现多路AD的数据采集,并通过PCIe传输到存储计算服务器,实现信号的分析、存储。    产品固化FPGA逻辑,适配2路1Gsps/2路2Gsps采集,实现PCIe的触发采集,单次采集容量2GB,开源......
  • 3.草图大师安装胚子插件、布料模拟插件
    一、胚子插件导入1.下载及安装胚子插件,https://www.bilibili.com/video/BV1xP411s7su/?vd_source=d1a768a1747fb268e1e40d209416a9d02.在草图大师界面右键勾选 二、布料模拟插件导入1.72版ClothWorks只支持su2020(ruby2.5)及以下,su2021(ruby2.7)控制台,使用1.74版ClothWorks,su2......