| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 体育竞技分析 -> 正文阅读 |
|
[Python知识库]体育竞技分析 |
目录一、自顶向下设计:? ? ? 1.顶层设计:自项向下设计中最重要的是项层设计。以体育竞技分析为例,可以从问题的IPC??描述开始。大多数程序都可以将IPO描述直接用到程序结构设计中,体育竞技分析??从用户处得到模拟参数,最后输出结果。下面是一个基础设计的4个步骤。?? ?步骤1:打印程序的介绍性信息。
步骤4:输出结果,设计思想类似,仍然只规划功能和函数,代码如下:
至此,体育竞技分析问题的程序框架已经清晰,但这仅是框架,main0)函?新没有做什么.原问题被划分为了4个独立的丽数:?pintntro0、getlnputsO、simnNCG数和printSuummary)。.?这些的数的名称、输入参数和预期返回值都已经确定。这个分解过程十分有益,因为它让程序员在这步不必?关心具体细节而专心专虑程序个分构设计。 ? ? ? 2.第n层设计:经过顶层设计,main()函数成为体育竞技分析的顶层结构,上述设计可以表示为下图,其中每层按照从左至右的顺序执行,每个函数用一个矩形表示,连接两个矩形的线表示上面函数对下面函数的调用关系。在信息流方面,箭头和注释表示输入和输出 ? ?每层设计中,参数和返回值如何设计是重点,其他细节可以智时忽略。确定事件重要特征而忽略其他细节过程称为抽象。抽象是一种基本设计方法,自顶向下的设计过程可以看作是发现功能并抽象功能的过程。自顶向下设计的第二阶段是实现或进一步抽象第2层函数。
getInputs()函数根据提示得到3个需要返回主程序的值,代码如下:
?simNGameson函数是整个程序的核心,其基本思路是模拟n场比赛,并跟踪记录每个球员赢得了多少比赛。模拟n场比赛”直观感受像个计数循环,而跟踪记录获胜场次更像计数过程。这是一个相当直观且租粒度的设计,类似顶层设计,其Python代码如下:
代码中设计了simneGame0函数,用于模拟场一场比赛,?这个函数需要知道每个球员的概率,返回两个球员的最终得分,下图8给出了这个设计对整体结构的更新。 ?接下来需要实现simOneGame0函数。为了模拟一场比赛,?需要根据比赛规则来编写代码,两个球员A和B持续对攻直至比赛结束。可以采用无限循环结构直到比赛结束条件成立。同时,需要跟踪记录比赛得分,保留发球局标记,?总之,?尽可能详细地模拟比赛过程。在模拟比赛的循环中,需要考虑单一的发球权和比分问题,通过随机数和概率,可以确定发球方是否赢得了比分(randomO<?prob)。如果球员A发球,那么需要使用A的概率,接着根据发球结果,更新是球员A得分还是将球权交给球员B。该函数的代码如下:
这里进一步设计了gameOver()函数,用来表示一场比赛结束的条件,?对于不同体育比赛结束条件可能不同,封装该函数有助于简化根据不同规则修改函数的代价,提高代码可维护性。gameOver()函数跟踪分数变化并在比赛结束时返回True,未结束则返回False。然后继续循环的其余部分。下图是程序新的结构图。 ?根据比赛规则,当任意一个球员分数达到15分时比赛结束。gameOver()函数实现代码如下:
?最后是printSummary()函数,其python代码如下:
全部实现代码如下:
最后再回到体育竞技分析问题,通过模拟方法分析球员之间能力的微小差异带来的比赛结果不同,是否会产生能力差别小却导致比赛结果一边倒的现象??假设A在发球局赢得了45%比赛,而他的对手B发球局比他多赢了55%。结果显示,尽管能力上只有很小的差距(5%),?但是A大约需要经历3场比赛才能赢一场,他赢得一场3?局或5局的比赛机会十分渺茫。进一一步地,可以将这个程序扩展为羽毛球、乒乓球、网球等多种模式,可以找到体育竞技规律。当然,深入探讨竞技规律的前提是参赛选手水平差别不大,所发现的规律将有助于弥补短板,类似中国男足与巴西男足的竞技规律是没必要探讨的。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 21:46:02- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |