2011-11-05 21 views
0

使用python 2.7。Monte Carlo Sim的求和結果; python

我有一個參數需要一個列表,將參數列表的值添加到列表「團隊」,然後比較某些位置值,並根據值返回勝利,損失或領帶。

def starterTrans3(starter): 
    wins = 0 
    losses = 0 
    nd = 0 
    team = [[1, 0], [1, 0], [0, 5], [3, -1]] 
    random.shuffle(team) 
    for t, s in zip(team, starter): 
     t.extend(s) 
    score_add(team, exit_score(team, starter)) 
    length = len(starter) 
    for i in range(0, length): 
     if team[i][4] > 0 and (team[i][1] > -team[i][4]) and team[i][2] >= 5: 
      wins += 1 
     elif team[i][4] < 0 and (team[i][1] <= -team[i][4]): 
      losses += 1 
     elif (team[i][4] <= 0 and team[i][1] >= -team[i][4]): 
      nd += 1 
    return wins, losses, nd 

我希望能夠多次模擬結果,使用random.shuffle(團隊)來隨機排列團隊列表。

我能做到這一點使用:

def MonteCarlo(starter, x): 
    for i in range(0, x): 
     print starterTrans3(starter) 

但我想應該能總結所有的勝利,損失和領帶從所有的模擬,然後通過模擬的數字除以(在此案例x),以獲得所有模擬中的平均勝利,損失和關係。

我試着改變starterTrans函數來使total_wins變量等於+ =勝,但是我一直沒弄明白。有任何想法嗎?

回答

2

我可能不會讓你的觀點,但...

def MonteCarlo(starter, x): 
    result = dict(w=0,l=0,n=0) 
    for i in range(0, x): 
     w,l,n = starterTrans3(starter) 
     result['w']+=w 
     result['l']+=l 
     result['n']+=n 
    return result 

return result['w']/float(x),result['l']/float(x),result['n']/float(x) 
相關問題