模擬體育競技

2022-08-22 15:51:10 字數 3378 閱讀 5029

一.體育競技分析的ipo模式:

輸入i(input):兩個球員的能力值,模擬比賽的次數(其中,運動員的能力值,可以通過發球方贏得本回合的概率來表示,

乙個能力值為0.8的球員,在他發球時,有80%的可能性贏得1分)

處理p(process):模擬比賽過程

輸出o(output):兩個球員獲勝的概率

自頂向下的設計是一種解決複雜問題的行之有效的方法。其步驟如下:

自頂向下設計的基本思想,如下圖:

二.模擬桌球的比賽

比賽規則:再一局比賽中,先得11分的

一方為勝方;10平後,先多得兩分的一方為勝方

單打賽程式如下:

函式名稱

函式說明

printinfo()

列印程式的介紹資訊

getinputs()

獲得使用者輸入的引數

simngames(n, proba, probb)

模擬n場比賽

simonegame(proba, probb)

模擬一場比賽

gameover(a,b)

定義一局比賽的結束條件

printsummary( winsa, winsb)

輸出模擬比賽的結果

# -*- coding: utf-8 -*-

"""created on mon may 13

11:13:38

2019

@author: lzz

"""#e15.1matchanalysis.py

from

random import random

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

print(

"第{}場勝利的為a

".format(int(i/3

)))

else

: winsb += 1

print(

"第{}場勝利的為b

".format(int(i/3

)))

return

winsa, winsb

def gameover(a,b):

if a<10 or b<10

:

return a==11 or b==11

if a>=10 or b>=10

:

if abs(a-b)==2

:

return

true

else

:

return

false

def simonegame(proba, probb):

scorea, scoreb = 0, 0

serving = "a"

while

not gameover(scorea, scoreb):

if serving == "a"

:

if random()

scorea += 1

else

: serving="b"

else

:

if random()

scoreb += 1

else

: serving="a"

return

scorea, scoreb

def printsummary(winsa, winsb):

n = winsa +winsb

print(

"競技分析開始,共模擬{}場比賽

".format(n))

print(

"選手a獲勝{}場比賽,佔比

".format(winsa, winsa/n))

print(

"選手b獲勝{}場比賽,佔比

".format(winsb, winsb/n))

def main():

printintro()

proba, probb, n =getinputs()

winsa, winsb =simngames(n, proba, probb)

printsummary(winsa, winsb)

main()

1000局的結果如下:

三.運用 pyinstaller 打包該程式為可執行檔案:

安裝pyinstaller庫

輸入**檔案路徑

打包成功

執行結果

模擬體育競技

encoding utf 8 模擬羽毛球競技 比賽規則 2.前四局採用21分制,每個隊只有在贏得至少21分,且同時超過對方2分時才勝一局 from random import random from time import time def printinfo function 列印程式的介紹資訊 ...

模擬體育競技分析

coding utf 8 created on tue jun 9 11 18 48 2020 author 13549 from random import random 第一階段 defprintintro print 模擬兩個選手a和b的羽毛球比賽 print 程式執行需要a和b的能力值 以0...

模擬體育競技分析

比賽規則 1.採用5局3勝制 2.前四局採用25分制,每個隊只有在贏得至少25分,且同時超過對方2分時才勝一局 3.決勝局 第五局 採用15分制,先獲得15分,且同時超過對方2分為勝 from random import random defgetinputs 獲得使用者輸入的引數 a eval i...