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

模拟体育竞技

时间:2023-12-26 14:12:59浏览次数:36  
标签:winsb winsa scorea scoreb probb proba 体育竞技 模拟

from random import random

#打印程序介绍信息

def printintro():

print("这个程序模拟两个选手a和b的乒乓球比赛")

print("程序运行需要a和b的能力值(以0到1之间的小数表示)")

#获得程序运行参数

def printinputs():

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 simonegame(proba, probb):

scorea, scoreb = 0, 0 #初始化ab的得分

serving = "a"

while not gameover(scorea, scoreb): #用while循环来执行比赛

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): #进行抢12比赛结束

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()

 


# 进行n场比赛

def simngames(n, proba, probb):

winsa, winsb = 0, 0

for i in range(n):

for j in range(5): #进行5局3胜的比赛

scorea, scoreb = simonegame(proba, probb)

if scorea > scoreb:

winsa += 1

else:

winsb += 1

return winsa,winsb

标签:winsb,winsa,scorea,scoreb,probb,proba,体育竞技,模拟
From: https://www.cnblogs.com/lzk-95uu/p/17928007.html

相关文章

  • CAD的模拟与测试:如何预测设计的实际表现
    1.背景介绍CAD(计算机辅助设计)是一种利用计算机辅助设计和制造工程设计的方法。CAD软件可以创建2D和3D的计算机图形和应用程序,这些图形和应用程序可以用来计算设计的性能、强度和其他性能指标。CAD模拟和测试是一种用于预测设计的实际表现的方法,它可以帮助设计师和工程师更好......
  • R语言布朗运动模拟股市、物种进化树状图、二项分布可视化
    全文链接:http://tecdat.cn/?p=32393原文出处:拓端数据部落公众号本文模拟了在连续和离散时间布朗演化一些简单的方法。布朗运动的数学模型(也称为随机游动)也可以用来描述许多现象以及微小颗粒的随机运动,如股市的波动和在化石中的物理特性的演变。布朗运动是随机模式,即改变了从一......
  • LY1099 [ 20230222 CQYC模拟赛 T2 ] 相似序列
    题意给定一个序列。每次询问求两个区间排序后是否只有一个或者没有位置不同。Sol不难想到主席树维护值域。考虑如何判断。注意到当前答案正确,当且仅当值域上两点不同且相邻。维护每个点的哈希值判断即可。Code#include<iostream>#include<algorithm>#include<cstdio......
  • 模拟体育竞技分析
    羽毛球比赛规则‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪......
  • LY1090 [ 20230220 CQYC模拟赛IX T1 ] 矩阵
    题意给定一个矩阵,你需要支持:循环左移循环右移循环下移循环上移按行置换求逆按列置换求逆Sol前\(4\)个操作是\(trivial\)的。如何处理后两个操作?考虑设一个三元组:\((x,y,A_{xy})\)。每次操作,对于每一个元素都能确定操作后另外某个元素。不难发现后两个操作就......
  • 在Linux环境下模拟实现命令解释器用c语言实现mypwd「粉丝答疑」
    Solution要在Linux环境下用C语言模拟实现一个命令解释器,包含mypwd,mymkdir,myrmdir,mycd,mylist,mycp,mydate,mycreate,mydelete,exit等基本命令,需要按照以下步骤进行:理解每个命令的功能:mypwd:显示当前工作目录。mymkdir:创建一个新目录。myrmdir:删除一个空目......
  • python模拟体育竞技分析
    (1)体育竞技模拟分析:采用乒乓球比赛规则‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬a.一局比赛:‪‬‪‬‪‬‪‬‪‬......
  • 模拟集成电路设计系列博客——4.4.5 基于自适应滤波的修调
    4.4.5基于自适应滤波的修调自适应滤波一般用于数字信号处理应用中,例如模型观察,通道均衡,或者噪声消除。同时也可以使用自适应滤波技术来修调一个给定场景中的连续时间滤波器。一个实现的例子可以参考下图[Kozma,1991]:其中自适应修调电路被用于最小化误差信号。在进行修调时,输......
  • 模拟集成电路设计系列博客——4.4.4 Q因子修调
    4.4.4Q因子修调在一些需要高速或者高度选择的滤波器中,非理想的积分器效应和寄生参数使得电路需要对积分器的极点进行Q因子修调。尽管我们之前讨论过如何通过修调单独的时间常数使得集成滤波器的的因子达到百分之1以内的误差,当\(Q>1\)时,即使Q因子上有微小的误差也可能会在滤波器......
  • PVST模拟技术
    PVST模拟机制说明:通常,MST区域会连接到其他域,pvst或rapid-pvst。运行pvst或rapid-pvst的这些交换机无法处理MST类型BPDU。因此,必须运行向后兼容机制,以便这两个域能够无缝交互。这是PVST模拟地址和实现的功能。此模拟只能在边界端口上运行,这些端口直接连接到pvst或rapid-pvst域交换......