zoukankan      html  css  js  c++  java
  • 预测乒乓球队比赛成绩

     一、相关内容

    模拟是用来解决现实师姐问题的重要手段和技术。计算机可以通过模拟现实世界的运行过程提供一般情况下无法获得的信息,使用计算机模拟解决问题的实例包括天气预测、飞机涉及、电影特效、核试验甚至军事对抗等,如果不采用计算机模拟,这些应用则需要机器复杂的实施过程,往往代价巨大。即使很简单的模拟也可以揭示一些困难问题的本质规律。

    二、模拟比赛代码如下

    """
    @author: Jun
    学号:32号
    """
    import math
    from random import random
    print("模拟乒乓球比赛,谁先得到11分,谁就胜出。如果打平,就是球数差为2时,球数多的胜出")
    def printIntro():
        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):#单人:赢4局的胜场+1
        winsA ,winsB=0,0
        x,y=0,0
        for i in range(n):
            scoreA,scoreB=simOneGame(probA,probB)if scoreA>scoreB:#得分多的胜局+1
                x+=1
            else:
                y+=1
            if x==4:
                winsA +=1
                x=0
            elif y==4:
                winsB +=1
                y=0
        return winsA,winsB
    def simMGames(n,probA,probB):#团队:赢3局的胜场+1
        winsA ,winsB=0,0
        x,y=0,0
        for i in range(n):
            scoreA,scoreB=simOneGame(probA,probB)if scoreA>scoreB:
                x+=1
            else:
                y+=1
            if x==3:
                winsA +=1
                x=0
            elif y==3:
                winsB +=1
                y=0
        return winsA,winsB
    def gameOver(a,b):#得分差大于等于2,一场比赛就结束
        if a==11 and b<10:
            return True
        elif b==11 and a<10:
            return True
        elif a>=10 and b>=10:#打平后,先领先2球,本局就结束
            if math.fabs(a-b)==2: 
                return True
    def simOneGame(probA,probB):#模拟一场比赛的得分
        scoreA,scoreB = 0,0
        serving = "A"
        while not gameOver(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))
        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()

    运行成果如下:

     三、打包文件

    首先,我们要用pip 下载pyinstaller,就输入pip install pyinstaller,即可下载

    如图:

    下载成功后,找到你要打包的文件所在的文件位置

    如图,输入pyinstaller “文件名”

    出现,表示打包成功了。

    然后,就可以找到一个文件名为,就是带有exe的文件

    这就是今天要说的内容了,后续,我们将继续深入研究python语言。

  • 相关阅读:
    递推最小二乘辨识平面双机械臂Matlab代码
    Matlab Robitic Toolbox学习笔记Day2
    DSP28335与CH340使用心得
    DSP 28335 GPIO输入引脚信号跳变
    DSP 28335 RS485 SCI串口通讯 出错无法进入中断
    DSP 28335 烧写FLASH程序 可以在线仿真 无法离线运行
    CRC16-Modbus 校验 C语言
    C语言 负数转十六进制 电机转速 CANopen命令转换
    CAN转USB 调试助手使用说明
    串的模式匹配 BF算法&KMP算法
  • 原文地址:https://www.cnblogs.com/asd516970982/p/10873003.html
Copyright © 2011-2022 走看看