system - Elo评级系统: start value when players can join the game constantly

标签 system rating

我在游戏中实现了 Elo 评级系统。玩家数量没有限制。玩家可以不断地加入游戏,因此玩家数量可能会逐渐增加。

如何准确计算 Elo 值并不重要,因为以下事实:如果 A 队击败 B 队,则 A 的 Elo 胜利等于 B 的 Elo 失利。

因此,我在评级系统的起始值方面遇到了问题:

  • 我应该为每个玩家使用起始值“0”吗?所有 Elo 值的总和将是恒定的。但由于玩家数量不断增加,就会出现某种 Elo 通货紧缩,不是吗?
  • 我应该使用大于 0 的起始值吗?在这种情况下,所有Elo值的总和会不断增加。所以可能会出现 Elo 通货膨胀。问题是:Elo 积分失去值(value),但起始值始终保持不变。

我该怎么办?你能帮助我吗?提前致谢!

最佳答案

您可以从零开始,然后在显示的分数中添加一个模糊因子,以使其保持在零以上,或者您也可以从 1000 开始 - 它们是同一件事。是的,起点为 1000 时,系统中的 ELO 总点数将不断增加,但每个玩家的平均点数始终相同 - 1000。Elo 的起始值始终是当前平均值。 ELO是零和游戏,玩家A失去的分数由玩家B获得。

当您将起点设置为 1000 时,您实质上是在说平均玩家 = 1000 分。对于初始玩家(beta 测试者?)的封闭组来说,这是正确的,该组内的平均值 = 1000。但是,如果您随着时间的推移不断改进游戏,那么与没有这样做的人相比,您的封闭组平均玩家会变得非常熟练玩过。

现在,当您为新玩家分配 1000 分时,您是在说新的普通玩家 = 现有的高技能普通玩家。这不是真的,他们的技能可能比你原来的封闭团队要低得多。因此,新玩家会失去积分,而您的高技能玩家会获得积分 => 通货膨胀。您需要做的是准确评估新玩家的技能,并为他们分配一个更符合他们实际技能的排名。这可以通过为他们的前 x 场比赛分配一个“临时排名”来完成,直到你感受到他们的技能为止。当临时排名时,只有他们的 ELO 分数会改变,而他们玩的人的分数不会改变。一旦他们加入真实的系统,他们进入 ELO 评分的分数将大致等于他们的实际技能,并且他们不会大幅上升或下降 => 没有通货膨胀或通货紧缩。

简而言之:临时排名

关于system - Elo评级系统: start value when players can join the game constantly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1881310/

相关文章:

C系统调用,删除文件

html - Ipad 上的评级格式问题

java - 将评级值设置为文本框

c - 如何知道我的代码在哪个物理处理器和哪个物理内核上运行

php - 贝叶斯评级

php - 评级公式设计(概念而非编码)

android - 在应用程序中对 Android 应用程序进行评级

java - System.out的实现中不需要捕获异常吗?

linux - 系统调用sync()的引用不明确

c - Unix 中的非阻塞代码