【问题标题】:Voting algorithm: how to calculate rank?投票算法:如何计算排名?
【发布时间】:2010-01-22 17:43:38
【问题描述】:

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

【问题讨论】:

  • PS 我唯一能想到的就是根据条目的“成熟度”(在比赛中的总次数)来纠正排名。另一方面,这种方法将禁止所有新条目获得最高排名,只是因为它们是新的,而不是因为它们没有获得最高票数(直到它们“成熟”并且不再调整排名)

标签: ranking voting rank voting-system


【解决方案1】:

试试这样的:

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

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

您也可以根据年龄(在本例中以天为单位)添加额外的权重,例如

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

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

【讨论】:

    【解决方案2】:

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

    即使一个人赢得了 1/1 的比赛,他的评分也将远远低于赢得/输掉数百场比赛的对手,例如。

    【讨论】:

      【解决方案3】:

      您始终可以使用积分系统而不是赢/输比率。获胜总是会给分数,然后你可以玩弄输掉分数,输掉分数,或者输掉分数。这完全取决于您希望人们如何排名。例如,如果您想支持参与的人而不是不参与的人(这听起来有点像您在玩 100 场比赛的人与1 场比赛)。 NHL 使用类似的排名技术(获胜 2 分,加时赛失利 1 分,常规失利 0 分)。这可能会给您更多的灵活性。

      【讨论】:

      • 这样,如果我们使用积分,新的更好的条目将永远无法赶上旧的条目。即使他们的赢/输比更高,他们也总是会有滞后。
      • 是的,就像我说的,这取决于你想做什么。该帖子似乎表明他想支持玩更多游戏的人。
      【解决方案4】:

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

      【讨论】:

      • 不,请参阅上面我对 dball917 的评论
      • 你也可以使用这样的方法来获得分数%:score = (win / (win + lost) ) * 100
      【解决方案5】:

      如果失败的条目最初具有更高的排名,那么在获胜条目中添加更多排名是否有意义,例如更强大的竞争对手?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-06
        • 2023-03-30
        • 2015-04-15
        • 1970-01-01
        • 1970-01-01
        • 2021-05-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多