• 体育竞技模拟(兵兵球)


    比赛规则

    1. 一场比赛: 单打:采用七局四胜制
                双打淘汰赛、团体赛:采用五局三胜制
    2. 一局比赛: 先得11分为胜,10平后,多得2分为胜 3. 一局比赛: 每队发球2次后,接发球方即成为发球方,依此类推,直至该局比赛结束或者到双方比分都达到10分或实行轮换发球法时,发球和接发次序仍然不变,但每人只轮发一分球
    # coding: utf-8
    
    from random import random
    from math import fabs
    
    def printIntro():
        print("这个程序模拟两个选手A和B的某种竞技比赛")
        print("程序运行需要A和B的能力值(以0到1之间的小数表示)")
        print()
    
    def getInputs():
        a = eval(input("请输入选手A的能力值(0-1):"))
        b = eval(input("请输入选手B的能力值(0-1):"))
        n = eval(input("模拟比赛的场次:"))
        print()
        return a, b, n 
    
    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 gameOver(a,b):
        if fabs(a-b) > 2 and a > 9 and b > 9:
            return True
        if a == 11 and b < 10:
            return True
        if b == 11 and a < 10:
            return True
    
    def simOneGame(proA,proB):
        scoreA, scoreB = 0, 0
        serving = "A"
        while not gameOver(scoreA,scoreB):
            if serving == "A":
                if random() < proA:
                    scoreA += 1
                else:
                    serving = "B"
            else:
                if random() < proB:
                    scoreB += 1
                else:
                    serving = "A"
        return scoreA, scoreB
        
    def simNGames(n,proA,proB):
        winsA, winsB = 0, 0 
        for i in range(n):
            scoreA, scoreB = simOneGame(proA,proB)
            if scoreA > scoreB:
                winsA += 1
            else:
                winsB += 1
        return winsA, winsB
    
    def main():
        printIntro()
        proA, proB, n = getInputs()
        winsA, winsB = simNGames(n,proA,proB)
        printSummary(winsA,winsB)
        
    main()
  • 相关阅读:
    动画 与 缓存
    flex 弹性布局
    JavaWeb学习总结(二)——Tomcat服务器学习和使用(一)
    java web总结(1)----入门
    面试系列-java(1)
    面试英语——题外话------笔记(1)
    面试内容的概览(1)-笔记
    菜鸟教程-设计模式简介-笔记
    java基础知识回顾-笔记(微学苑)
    mysql学习总结-笔记(总结的不怎么样)
  • 原文地址:https://www.cnblogs.com/justlikecode/p/10870918.html
Copyright © 2020-2023  润新知