Monte Carlo Sim的求和结果;蟒蛇

时间:2011-11-05 02:10:51

标签: python for-loop sum montecarlo

使用python 2.7。

我有一个参数,它接受一个列表,将参数列表的值添加到列表“team”,然后比较某些位置值并根据值返回win,loss或tie。

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变量等于+ = wins,但我无法弄明白。有什么想法吗?

1 个答案:

答案 0 :(得分: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)