我在网站上实现了一个简单的上/下投票系统,我跟踪个人投票以及投票时间和唯一用户 ID(散列 IP)。
我的问题不是如何计算选票的百分比或总和 - 而是更多,根据选票确定好分数的好算法是什么?
我发现按纯投票百分比排序是不可接受的,以及简单地统计赞成票。
考虑这个例子:
- 图片 A:4 票赞成,1 票反对
- 图片 B:5 票赞成,4 票反对
- 图片 C:1 票赞成,0 票反对
理想的系统会将 A 放在首位,然后可能是 B,然后是 C。
在纯百分比场景中,顺序为 C > A > B。(错误)在纯计票场景中,顺序为 B > A > C。(错误)
我有一个基于系统对分数的信心的某种“混合”算法的想法,可能类似于:
// (if totalvotes > 0, else score = 0)
score = 1 - ((downvotes+1 / totalvotes+1) * sqrt(1 / totalvotes))
但是,我希望在从现在到日落之前坐下来调整我的算法之前,询问社区是否已经存在任何我根本不知道的定义明确的算法。
我也有每次投票的日期数据——但是,网站的内容对时间不是很敏感,所以我根本不在乎按“热门内容”排序。