zoukankan      html  css  js  c++  java
  • 【Python】以模块化做比赛模拟

    import random   #随机
    #主函数-打印基本信息-获取数据-判断赢场数-打印赢场
    def main():
    printIntro()
    probA, probB, n = getInputs()
    winsA, winsB = simNGames(n, probA, probB)
    printSummary(winsA, winsB)
    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):
    winsA, winsB = 0, 0 #设置赢场数
    for i in range(n):
    scoreA,scoreB = simOneGame(probA,probB)
    if scoreA > scoreB:
    winsA += 1
    else:
    winsB += 1
    return winsA , winsB
    def simOneGame(probA,probB):
    scoreA, scoreB = 0, 0 #设置分数
    serving = "A"
    while not gameOver(scoreA,scoreB): #没有结束就……
    if serving == "A":
    if random.random() < probA: #以随机数作为运气
    scoreA += 1
    else:
    serving = "B"
    else:
    if random.random() < probB:
    scoreB += 1
    else:
    serving = "A"
    return scoreA , scoreB


    def gameOver(a,b):
    return a==15 or b==15 #如果超过15分就结束一场
    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))

    main()
  • 相关阅读:
    MySQL中的用户与授权
    Vim安装使用和配置
    Mysql中的explain和desc
    array_map、array_walk、array_reduce
    PHP二维数组去重(指定键名)
    git配置ssh秘钥(公钥以及私钥)windows
    在nginx上用FastCGI解析PHP
    关于token登录逻辑分析
    公有云 私有云 混合云 的区别
    使用Docker在服务器上部署Ubuntu,本地传文件到docker
  • 原文地址:https://www.cnblogs.com/naraka/p/8993613.html
Copyright © 2011-2022 走看看