python - 使用 trueskill 算法,给定两个玩家的评分,我如何计算赢/输概率?

标签 python algorithm

我看到这个问题在 trueskill 的讨论中出现了很多,但我还没有找到决定性的答案。

我在这里使用 Python 实现:

https://github.com/sublee/trueskill

我在这里使用该库整理了一个简单的模拟:

https://gist.github.com/klenwell/3a15eca6b83ce575d0ca

问题提交为 first issue对于 Python 库。在Jeff Moser blog post大多数 trueskill 的讨论都会回到这个问题,这个问题在评论中多次出现。

有人可以提供与 Python 库实现兼容的函数,该函数可以根据两个玩家的评分准确返回玩家对另一个玩家的预测获胜概率吗?

最佳答案

这是一个基于 this comment 的函数在 Moser 博客上:

from math import sqrt
from trueskill import BETA
from trueskill.backends import cdf

def win_probability(player_rating, opponent_rating):
    delta_mu = player_rating.mu - opponent_rating.mu
    denom = sqrt(2 * (BETA * BETA) + pow(player_rating.sigma, 2) + pow(opponent_rating.sigma, 2))
    return cdf(delta_mu / denom)

使用 my gist 测试,这似乎比发现的原始 win_probability 函数表现更好 here .

此函数仅处理正面交锋的情况,但评论中包含了一种更通用的计算多人比赛获胜概率的方法。

关于python - 使用 trueskill 算法,给定两个玩家的评分,我如何计算赢/输概率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28031698/

相关文章:

python - puppet cert 列表全部使用 api/python?

Python将我的电子邮件发送到gmail,但不发送到outlook或工作地址

arrays - 计算有条件的子数组?

c++ - 用于成对比较和跟踪最大/最长序列的STL算法

algorithm - 智能设计排序真的不需要额外的内存吗?

python - 函数 driver.switchTo.frame() 在 Selenium 中不起作用

python - 我如何将 numpy 数组转换为 pandas 数据框

python - 如何在 python selenium 中获取每个 window_handles 项目的标题

javascript - 查找未用于应用程序的空闲端口 - 查找一些算法

algorithm - 在 N 个列表中查找匹配项的有效方法?