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

投票权重算法
EN

Stack Overflow用户
提问于 2012-01-19 07:01:41
回答 2查看 756关注 0票数 2

我正在开发一个类似于Digg的web应用程序,我需要一个算法来按受欢迎程度对帖子进行排序。例如:在第一页,我想要有今天最受欢迎的帖子,以及几天前几天达到足够票数的帖子。我的数据库现在看起来是这样的:

代码语言:javascript
复制
Table | fields
Posts | id | ... | time
Feedback | id | userid | time | upvote

向上投票字段为bool。如果是肯定的,则表示用户点击了向上投票按钮。

我的表可以修改,因为它们是空的。

任何帮助我们都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-19 07:33:01

就我个人而言,我喜欢采取更复杂的方法。一般的想法是,cron处理器每5分钟运行一次,根据你提到的标准计算每个实体的受欢迎程度,以及基于用户的standard deviation,以消除明显的帮派投票集会,以提高他们自己的社交圈内的内容。

看看Lawson关于考虑投票年龄的好主意的答案。但考虑到基于声誉、资历等应用用户自己的权重可能是有用的。

不幸的是,这并不简单。虽然我发现它比大多数网络编程更有趣,但考虑到游戏系统的所有基本心理因素可能是一个非常耗时的过程,而且可能不是你所想的,除非你碰巧为Digg工作,或者是一个严肃的初创公司的一部分。

这是php.net标准差:http://php.net/manual/en/function.stats-standard-deviation.php

尽管我认为这个答案更切中要害:z-Scores(standard deviation and mean) in PHP

代码样本可能很好,但我们需要一些您的数据来做到这一点,即使这样,这可能会变得相当复杂。但这绝对是很有趣的。尤其是当您的代码发现有人试图玩弄系统时。

票数 2
EN

Stack Overflow用户

发布于 2012-01-19 07:19:25

如果我没理解错的话,你希望一张选票的价值与它的年龄成反比。(投票时间越长,它对你的人气指数的影响就越小。)

要实现这一点,一种简单的方法是将选票转换为人气单位(PU),并且不仅对简单的选票求和,而且对PU求和。PU的构造可以像使其等于1/(投票的年龄,以天或小时为单位)一样简单。一天前的投票将价值1PU,而两天前的投票将价值的一半。

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

https://stackoverflow.com/questions/8918793

复制
相关文章

相似问题

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