现在有一个算法来解决当前的评级吗?

时间:2015-12-05 19:49:09

标签: algorithm rating ratingbar

我有来自数据库的旧评级和来自用户的新评级, 我试图搜索“评级算法”,但他们保存每个用户的评级。在我的情况下,我不保存以前的评级。我的评级栏最高为5

目前我的解决方案是oldR + newR / 2.这有意义吗?

1 个答案:

答案 0 :(得分:0)

不是真的。当你考虑它时,这样的公式意味着新的投票比旧投票更重要。想象一下像这样的一系列投票:

Vote:     1  1  1  1  1  1  1  1  1  1  1  5 
Rating:   1  1  1  1  1  1  1  1  1  1  1  3 

显然,在这种情况下评级不应该是3,它应该仍然是1(或最差2),但是你的公式将是。

至少应该存储投票数和平均评分,以便计算newR = ((oldR*votesCast)+newVote)/(votesCast+1)。这还需要以更高的精度存储评级,而不仅仅是整数。 (您可以在显示它时将其四舍五入,但在内部也应该跟踪分数。)

稍微好一点的解决方案是分别存储到目前为止为5种不同评级投了多少票,允许你计算不同种类的均值(例如几何)。

显然,最灵活的(但大多数存储和计算密集型)是使用用户ID和时间戳存储每个单独的投票,允许您使用您能想到的任何算法。