代码之家  ›  专栏  ›  技术社区  ›  mvbl fst

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

  •  6
  • mvbl fst  · 技术社区  · 15 年前

    我正试图找出一种计算等级的方法。现在,它只需计算每个参赛项目的赢/输比例,因此,例如,一个项目在100场比赛中赢了99次,它就拥有99%的获胜排名。但是,如果一个参赛者在总共1张选票中赢得1张,它将拥有100%的获奖排名,但肯定不会高于99次获奖的参赛者。有什么更好的方法可以做到这一点?

    5 回复  |  直到 15 年前
        1
  •  5
  •   z -    15 年前

    http://en.wikipedia.org/wiki/Elo_rating_system

    例如,即使一个人赢了1/1场比赛,他的得分也远低于在与强敌的比赛中赢了/输了数百场比赛的人。

        2
  •  6
  •   pib    15 年前

    试着这样做:

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

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

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

    这将把全新的条目放在第一页的顶部,然后在接下来的5天里,它们将在列表中慢慢向下移动(我假设年龄是一个分数,而不仅仅是一个整数)。在这5天结束后,他们将完全基于前一位伪代码的分数被放入列表中。

        3
  •  1
  •   dball917    15 年前

    你可以使用积分制,而不是胜负比。获胜总是会给你分数,然后你可以在输球时扣分,输球时不给分,输球时少给分。这完全取决于你希望人们的排名。例如,如果你想帮助那些参加比赛的人而不是那些不参加比赛的人,你可能想给获胜的人2分,给失败的人1分(这听起来有点像你在100场比赛对1场比赛的例子中所说的那样)。NHL采用类似的排名技术(获胜得2分,加时赛失利得1分,常规失利得0分)。这可能会给你更多的灵活性。

        4
  •  0
  •   infinitloop    15 年前

    如果我理解正确的话,那么得票越多,排名就越高。

        5
  •  0
  •   mvbl fst    15 年前