投票算法:如何计算排名?

时间:2010-01-22 17:43:38

标签: ranking voting rank voting-system

我试图找出一种计算排名的方法。现在它只需要获取每个条目的赢/输比率,例如一个人在100个中赢了99次,它有99%的胜率。但是如果一个条目在总共1个选票中赢得1个,它将获得100%的胜利排名,但绝对不能高于赢得99次的那个。什么是更好的方法呢?

5 个答案:

答案 0 :(得分:6)

尝试这样的事情:

votes = wins + losses
score = votes * ( wins / votes )

这样,50%的胜利,但百万票仍然领先100%胜利,但只有一票。

您可以根据年龄(本例中为天数)添加额外的重量,例如

if age < 5:
    score = score + ((highest real score on site) * ((5 - age) / 5)

这将把全新的条目放在第一页的顶部,然后它们将在接下来的5天内缓慢向下移动(我假设年龄是一个小数,而不仅仅是一个整数)。在5天之后,它们将仅根据前一段伪代码的分数放入列表中。

答案 1 :(得分:5)

根据你想要的复杂程度,Elo系统国际象棋使用(或类似的东西)可能是你想要的:http://en.wikipedia.org/wiki/Elo_rating_system

即使一个人赢得了1/1的比赛,他的评分也远远低于那些赢得/输掉数百场对抗强硬对手的人。

答案 2 :(得分:1)

您总是可以使用积分系统而不是赢/输比率。获胜总会得分,然后你可以玩弄失败的积分,不是因为失败而获得积分,或者奖励丢失的积分。这完全取决于您希望人们如何排名。例如,你可能想要赢得2分,输掉1分,如果你想支持那些不参加比赛的人(这听起来就像你在玩100场比赛的人的例子中所说的那样) 1场比赛)。 NHL使用类似的技术进行排名(获胜2分,加班损失1分,常规损失0分)。这可能会给你更大的灵活性。

答案 3 :(得分:0)

如果我正确理解了这个问题,那么获得更多选票的人就会获得更高的排名。

答案 4 :(得分:0)

如果丢失的条目最初具有更高的排名,例如,如果输入条目中添加更多排名是有意义的,例如更强大的竞争对手?