Как рассчитать вероятность победы для трёх и более участников соревнования (желательно на Python)
К примеру проходит некое состязание в котором участвуют четыре участника со следующими шансами на победу: первый - 20, второй - 40, третий - 60, четвертый - 70. Т.е. шанс на победу, это произвольное число, некий показатель силы. Состязание проходит в несколько раундов, победитель в каждом раунде может быть только один. Как произвести расчет количества побед за несколько раундов, к примеру 10, для каждого игрока, с учётом его шансов на победу?
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Ну это получается "метод Монте-Карло" видимо. Только раундов пришлось взять побольше, иначе у игроков с маленькими шансами вообще ни разу побед не бывает:
import random
from collections import Counter
num_players = 4
player_numbers = list(range(1,num_players+1))
player_chances = dict(zip(player_numbers, [20,40,60,70]))
rounds = 100
c = Counter(max(player_numbers, key=lambda x: random.random() * player_chances[x]) for _ in range(rounds))
print(c.most_common())
Вывод (игрок, побед):
[(4, 45), (3, 43), (2, 11), (1, 1)]