我的应用程序的用户(实际上是游戏)回答问题以获得积分。问题由其他用户提供。由于音量,我无法自己查看所有内容,所以我决定将过滤过程挤出给用户(玩家)。规则很简单:
如果每个人都能看到一切,那就很容易了。但是,在游戏阶段的后期,用户不应该得到他们已经看过的问题。这意味着用户不应该看到所有问题,而且他们没有看到的问题会在游戏后期播放(回答)。
问题总数远远大于玩家数量,每天都会添加新问题,新玩家会一直来,所以我不能提前分发。
我正在寻找一种算法,可以最大化所有玩家的评级可玩(即看不见)问题的数量。
我试图谷歌,但我甚至不确定在搜索框中放入哪些条款,并使用“分发”,“投票”,“协作过滤”之类的内容会给出非常有趣但无法使用的结果。
好问题与坏问题的比例是1:3,即。 25%的问题评为良好。已提交的未评级问题数量超过10000个。具有投票权限的活跃用户数量约为150个。
我目前正在考虑将问题池和用户群分成两部分。用户群的一部分将检查另一部分的问题,反之亦然。拆分问题很容易(甚至比较奇怪)。但是,我仍然不确定如何划分用户群。我考虑过在“热门问题检查器”列表中使用奇数/偶数位置,但是在检查新问题时,列表上的位置每天都会发生变化。
更新:我刚刚问过sequel to this question - 我需要定期从游泳池中删除一定数量的问题。
答案 0 :(得分:4)
我不知道是否有一个特定的,众所周知的算法。然而,这将是我的思路:
所以我对最终算法的处理方法是:
[以上内容可以进一步调整,考虑到当用户首次注册时,网站上已经有一批已批准但看不见的问题]
当然,你可以通过奖励有价值的活动来严重影响用户的行为(SO上的徽章和声誉点是一个不言自明的例子)。
EDIT / ADDENDUM:评论中的讨论澄清了GR是固定的,每天只有一个问题。此外,OP表示系统每24小时至少会有一个新的批准问题。这意味着可以用以下两种形式之一简化上述算法:
如果用户只能在他回答每日问题后投票:
如果系统中至少有一个已批准但未见过的问题,请让用户随意投票。
如果用户甚至可以在回答他的每日问题之前投票:
如果系统中至少有两个已批准但未见的问题,请让用户随意投票。
如果用户在系统上投票所有可投票的问题并且然后在23:59回答他的每日问题,那么仍然会有一个问题可以在00:00回答,加上24小时的时间让系统获取第二天的新问题。
HTH!