來舉一個現實世界的案例,洛杉磯天使隊(Los Angeles Angels)的Mike Trout在最新球季的上壘率(On Base Percentage, OBP)為.461,位居大聯盟第一,緊追在後的是波士頓紅襪的Mookie Betts,Mike Trout的.461上壘率是什麼意思呢?根據今年球季過去的數據來看,當Mike Trout上場擔任打者時,平均有46.1%的機率會上壘,可能是安打或四壞球保送,有了過去的資料我們就可以來模擬Mike Trout在面對平均水準的大聯盟投手時,每次的打擊狀態。
import random
def Mike_Trout(OBP):
x = random.randint(1,1001)
if x < OBP * 1000:
print("On Base")
else:
print("Out")
for i in range(5):
Mike_Trout(0.461)
假設一場比賽Mike Trout可以有5個打席,模擬結果如下.:
Out
On Base
Out
On Base
Out
Out
Out
Out
Out
On Base
On Base
Out
Out
Out
On Base
如果我們模擬1000次Mike Trout的打席,上壘的次數會相當靠近461次,是不是很簡單呢?
當然不可能那麼簡單啦!利用過去的資訊去推估Mike Trout相當合理,但是球員的人來瘋、低潮期或成長大爆發,是無法反映在.461這個數字上的,面對洛杉磯道奇的Clayton Kershaw的上壘率只剩下.313,就應該以.313去作為OBP的估計參數。
以上利用棒球的例子來介紹簡單的蒙地卡羅模擬法,下回將會介紹蒙地卡羅在財金領域的應用。