zoukankan      html  css  js  c++  java
  • python学习--程序设计方法实例一

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    #matchSim.py
    from random import * 
     
    def main():
        printIntro()
        probA,probB,n = getInputs()
        winsA, winsB = simNGames(n,probA,probB)
        PrintSummary(winsA, winsB)
     
    def printIntro():
        print('本程序可模拟两个运动员之间的比赛结果')
        print('假设有两个运动员甲和乙')
        print('以往获胜概率如下:(0到1之间的数字)')
     
    def getInputs():
        a = eval(input('运动员甲获胜的概率是?'))
        b = eval(input('运动员乙获胜的概率是?'))
        n = eval(input('模拟他们之间比赛的场次?'))
        return a,b,n
     
    def simNGames(n,probA,probB):
        winsA = 0
        winsB = 0
        for i in range(n):
            scoreA,scoreB = simOneGame(probA,probB)
            if scoreA >scoreB:
                winsA = winsA + 1
            else:
                winsB = winsB + 1
        return winsA,winsB
    def simOneGame(probA,probB):  #一场比赛的结果预测
        '''
        假设发球权在甲手时,获得的随机数小于甲的获胜概率,则甲得分加一分,甲继续发球,
        如果获得的随机数大于甲时,甲不得分,甲把发球权交换给乙;
        假设乙获得发球权后,获得的随机数小于乙的获胜概率,则乙得分加一分,乙继续发球,
        如果获得的随机数大于乙时,乙不得分,乙把发球权交换给甲。
        然后返回甲乙的分数
        '''
        scoreA = 0
        scoreB = 0
        serving = ""
        while not gameOver(scoreA,scoreB): #哪个先到15分一场比赛结束
            if serving == "":        
                if random() < probA:  #random()函数每次获取0到1之间的随机数
                    scoreA = scoreA + 1
                else:
                    serving = ""
            else:
                if random() < probB:
                    scoreB = scoreB + 1
                else:
                    serving = ""
        return scoreA,scoreB
     
    def gameOver(a,b):
        return a==15 or b==15
     
    def PrintSummary(winsA, winsB):
        n = winsA + winsB
        print('
    比赛模拟:%d'%n)
        print('甲获胜场次:{0}({1:0.1%})'.format(winsA,winsA/n))
        print('乙获胜场次:{0}({1:0.1%})'.format(winsB,winsB/n))
     
    if __name__ == '__main__':
        main()
  • 相关阅读:
    7-3.自定义列表
    GoLang 使用协程与管道随机生成姓名
    [Unity3D] 点击物品显示物品信息
    [Unity3D] 碰撞物体添加到背包
    [PS] DDS文件导入插件
    [Unity3D] 给角色添加武器
    [Unity3D] 刚体 碰撞器 触发器
    [Unity3D] 物体的几种移动方法
    [Unity3D] 解决导入的模型出现闪烁的问题
    [Unity3D] 人物角色跳跃(动画跳跃&刚体跳跃)
  • 原文地址:https://www.cnblogs.com/hayden1106/p/7843065.html
Copyright © 2011-2022 走看看