我正在实施一个举办健身比赛的网站,我需要一个很好的方法来产生“得分”或“排名”。
比赛由一个或多个来自特定健身房的运动员/参赛者组成的团队组成,他们挑战来自一个或多个其他健身房的相同数量的参赛者。可以进入比赛的健身房数量没有任何限制 - 可能有超过一百个健身房参加比赛。根据各种因素为每个团队分配积分:时间,代表,最重的升力等。
在一场比赛中将得分归功于每支球队都很容易;当我们尝试根据他们的比赛历史为每个健身房产生排名时,事情变得更有趣。直观地说,在一个比赛中在其他10个健身房中排名第一的球队应该排名高于在不同比赛的其他5个健身房中排名第一的球队。
我无法想出一个直观,公平的排名机制。关于可能是一系列排名算法的任何具体想法或建议都将受到赞赏。
答案 0 :(得分:4)
查看Halo中使用的TrueSkill对玩家进行排名。 http://research.microsoft.com/en-us/projects/trueskill/details.aspx ELO只处理1v1而TrueSkill可以处理1个或更多玩家和多个团队的团队。
如果您不想编码任何内容,还有在线计算器。 如果你想要代码示例,原始文件在F#中可用,Jeff Moser在C#和最近的PHP中重新编码。 谷歌“Jeff Moser计算技能”
答案 1 :(得分:1)
如何将每支球队视为“击败”其在特定比赛中所放置的所有球队,以及“失败”给下面的所有球队?然后,您可以随着时间的推移为每个团队计算ELO。
答案 2 :(得分:1)
如果你认为比赛是健身房。也许公平的等级取决于他们的肌肉,这肯定取决于他们做了多少运动以及它是多么规律。当然,必须采取“之前”和“之后”运动的一些变量。简而言之,计算他们所做运动的有效性。
通常情况下,当运动x进行40次时,可以增加肌肉5点
先生。 A锻炼x次30次,得到4次肌肉。 因此A先生的分数=(4/30)/(5/40)
总分是A先生完成的另一项运动的总和。总计=分数(x)+分数(y)+分数(z)
这是公平的,因为实际结果与预期结果直接比较。这也可以防止更强壮的人进行简单的锻炼。因为,你知道,阿诺德施瓦辛格不能用1公斤哑铃增加肌肉。
当然,单位(肌肉)可能会因运动而有所不同。