首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >加权投票算法/计算

加权投票算法/计算
EN

Stack Overflow用户
提问于 2011-02-26 06:49:09
回答 4查看 2.6K关注 0票数 3

我正在创建一个‘决斗’的应用程序,我在计算结果的死胡同。

每个用户都有赞成票或反对票。没有1-5或五星级的评级。

例如:如果我被显示了5次,并赢得了3次,我将有3次“赞成”和2次“反对”。

如果我做直线百分比,任何谁被显示1次和选择1次(100%)将始终是顶部,如果有人是9/10 (90%),他们将低于1/1,但在理论上将属于顶部。

有谁有办法做到这一点吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-22 21:38:29

而不是积极的投票百分比,跟踪它的贝叶斯平均值,例如:

代码语言:javascript
复制
(positive votes + weighted avg positive votes) / (total votes + arbitrary sample)

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

票数 2
EN

Stack Overflow用户

发布于 2011-05-22 21:19:50

我也一直在寻找一种适合投票网站的算法。

虽然@joshhendo建议的似乎是一种合理的选票排名方法,但它没有考虑到赞成票的百分比。

例如:

  • 项目1有70“向上”票数和30“向下”票数。
  • 项目2有400“向上”票数和300“向下”票数。

对于项目1: 70-30 = 40

对于项目2: 400-300 = 100

项目2将出现在项目1的上方,因为它有更多的赞成票。但是第二项只有25%的赞成票,而第一项有大约57%的赞成票。项目1显然应该出现在项目2的上方,因为即使它没有那么多的总票数,它也有更好的“向上”到“向下”的得票率。

但话又说回来,人们希望避免最初的问题,即1票(肯定)的项目出现在其他所有项目之上。

我建议你阅读这个:http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

它为这个问题提出了一种更合理的数学解决方案。这实际上是一个非常有趣的阅读,我将在我自己的网站上实现类似的东西。

编辑

这也是一个非常好的读物:http://blog.linkibol.com/2010/05/07/how-to-build-a-popularity-algorithm-you-can-be-proud-of/

/edit

票数 4
EN

Stack Overflow用户

发布于 2011-02-26 06:55:11

您可以只计算票数,向上票数为+1,向下票数为-1。

例如,假设某人的得票率为9/10 (例如,得票率为9票,反对票为1票),那么他们的得分将是9 + -1 = 8。这比1/1更高,1/1的人有1张上票和0张下票,因此他们的得分将是1 + -0 = 1。因此,在您的百分比系统中获得90%的人现在的得分为8,高于得分为1的100%的人。

这是我能想到的最好、最简单的解决方案。可能有更复杂的解决方案可以工作,但对于你想要的,我认为应该是有效的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5123567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档