简单的排名算法

时间:2011-10-14 14:04:52

标签: algorithm ranking

我需要创建一个民意调查,以便按照它们的好坏顺序创建项目的排名列表。我打算向每个用户展示两个项目并让他们选择一个他们认为更好的项目,并多次重复该过程。它有点类似于您在社交网络电影中看到的内容。我应该如何根据收到的答案对项目进行排名?

3 个答案:

答案 0 :(得分:11)

如果你想要点什么,请看ELO chess rating system

答案 1 :(得分:4)

我认为你可以使用用于对国际象棋选手进行排名的Elo算法,由Arpad Elo教授创建。您可以在此Wikipedia Page

上阅读更多此算法

Mark Zuckerburg也在制作Facemash时使用它。这是一个人们可以根据那里的热情评价女孩的网站。如果您已经看过“社交网络”图片,您就会知道这一点。如果您想要实际使用此算法,可以访问此page。如果您了解PHP,则可以轻松更改index.php(主页)的外观。你可以将女孩的形象替换为你想要排名的女孩的形象

答案 2 :(得分:1)

根据您的评论,我的假设如下:

  1. 您有一系列原始图片。
  2. 您拥有给定原始图像的x份副本,其中x> = 1。
  3. 对于给定的图片,用户只能看到该图像的副本,而不能看到其他原始图片的图像。
  4. 为了澄清,您是否打算进行设置以便用户看到两个随机失真的图像,或者将失真的图像与特定的原始图像相关联?

    如果您打算将特定的扭曲图像与特定的原始图像相关联,我认为我的想法会起作用。

    1. 对于与原始项目相关联的扭曲图像的每次投票,请将该原始投票的总票数加1。
    2. 在所选择的扭曲图像上添加1对是的投票数。
    3. 在未选择的扭曲图像上添加1张未投票。
    4. 在每个失真图像上的总投票数中加1。
    5. 使用image_rank =(#total_distorted_image_votes /#原始图像的总票数)标准化“图像等级”* 100
    6. 使用yes_rank =(#total_distorted_image_yes_votes / #total_distorted_image_votes)* 100
    7. 将“是”等级标准化
    8. 按image_rank或yes_rank排序。使用yes_rank将奖励具有大量赞成票数的图像,而使用image_rank将奖励出现很多的图像。
    9. 如果您有总票数的计数器,您可以扩展到此范围以开始对原始图像“群组”进行排名。你只需将那些(image_votes / total_votes)* 100标准化并对其进行排序。然后你会获得最多出现(ed)图像的“排名”。