Подведение итогов Монте-Карло Сима;питон - PullRequest
0 голосов
/ 05 ноября 2011

Работа в Python 2.7.

У меня есть аргумент, который берет список, добавляет значения списка аргументов в список «team», а затем сравнивает определенные позиционные значения и возвращает выигрыш, проигрыш или ничью в зависимости от значений.

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 (team) для случайного упорядочивания списка команд.

Я могу сделать это, используя:

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

Но я хотел бы иметь возможность суммировать все выигрыши, потери и связи из всех симуляций, а затем делить на количество симуляций (в данном случае х), чтобы получить среднее значение выигрышей, проигрышей и связи во всех симуляциях.

Я пытался изменить функцию starterTrans, чтобы иметь переменную total_wins, равную + = победам, но я не смог понять это. Есть идеи?

1 Ответ

2 голосов
/ 05 ноября 2011

Я не могу получить вашу точку, но ...

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...