竞赛评分/排名算法

4

主旨

我正在实现一个托管健身比赛的网站,需要一个好的方法来生成“分数”或“排名”。

比赛规则

比赛由一支或多支来自特定健身房的运动员/参赛者组成的团队挑战同样数量的来自一种或多种其他健身房的参赛者。参加比赛的健身房数量没有限制 - 可能有超过100个健身房参加比赛。根据各种因素为每个团队分配积分:时间、重复次数、最重的举重等。

在单个比赛中为每个团队归属一个分数是容易的;当我们尝试基于他们的比赛历史记录为每个健身房生成排名时,事情变得更加有趣。直观地说,在一场比赛中击败其他10个健身房的团队应该比在不同比赛中击败其他5个健身房的团队排名更高。

我正在努力想出一个直观、公平的排名机制。如果您有任何具体的想法或建议,例如一系列排名算法,将不胜感激。


抱歉,不涉及编程(在我看来)(如果你有一个排名系统并需要算法来表达它,那就是“涉及编程”)。 - Binary Worrier
3个回答

4
请查看在Halo中用于排名玩家的TrueSkill。 http://research.microsoft.com/en-us/projects/trueskill/details.aspx ELO只处理1v1赛事,而TrueSkill可以处理由1个或多个玩家组成的团队和多个团队。
如果你不想编写任何代码,也有在线计算器可供使用。 如果您需要编码示例,请查看原始的F#版本,Jeff Moser已经将其重新编码为C#和PHP。 Google搜索“Jeff Moser计算技能”。

1

如果将每个团队视为在特定比赛中“击败”其排名在上面的所有团队,并且“输给”其排名在下面的所有团队,那么您可以随时间计算每个团队的ELO


ELO 在每个玩家拥有相等比赛次数的锦标赛中是有意义的。但在这里,据我所知,其他健身房可以随后加入,他们将处于劣势,因为老牌健身房已经有了很多胜利和失败。 - Nikita Rybak
据我理解这个问题,一个“单一”的锦标赛不会有健身房迟到的情况;参赛者是事先确定的。而且ELO完全能够对已经打了不同场次比赛的选手进行排名,因此错过几场比赛的健身房不应该受到不公平的劣势。 - Ani
@Ani,我引用问题:“为单个比赛中的每个团队分配得分是容易的部分;当我们尝试根据他们的比赛历史生成每个体育馆的排名时,事情变得更加有趣。” - Nikita Rybak
@Nikita Rybak:你在那个锦标赛中的 ELO 分数将会影响你的整体 ELO 等级。因此它是有状态的。 - Ani
@Ani:这绝对听起来像是我想要的。我喜欢一个入门级别的竞争者(A)可以在击败B后“追赶”其他高排名的竞争者(B)的事实。从简要阅读维基百科链接来看,这个系统也被用于在线游戏,我觉得它与我所谈论的竞争类型有很多共同之处。谢谢你的回答 - 我认为这可能是我最终使用的东西。 - Charles
显示剩余4条评论

1

如果你把竞争看作是健身房,那么公平排名可能取决于他们的肌肉量,这当然取决于他们做了多少运动以及运动的规律性。当然,必须考虑到运动前后的一些变量。简而言之,计算他们所做运动的有效性。

例如:

通常情况下,当做x运动40次时,可以增加5个肌肉点数。

A先生做了30次x运动,增加了4个肌肉点数。 因此,A先生的得分=(4/30)/(5/40)

总分数是A先生做的其他运动的得分之和。总分=得分(x)+得分(y)+得分(z)

这样做是公平的,因为实际结果直接与预期结果进行比较。这也可以防止一个更强壮的人做一个简单的运动。毕竟,你知道,阿诺德·施瓦辛格不能用1公斤哑铃增加他的肌肉。

当然,单位(肌肉)可能因运动而异。


我认为他说这部分(“在单个比赛中为每个团队分配得分”)是微不足道的 :) - Nikita Rybak

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接