0

用例:假设对象的评级为 1 到 5 星。它已经是 50 票,平均评分 4.1。当用户进行投票(1-5星)时,需要重新计算评分。

如何实现这个逻辑?问题是我们不知道每张选票的价值,只知道当前评分和总票数。

4

3 回答 3

4

newRating = (oldRating * oldCount + currentVote) / (oldCount + 1)

于 2012-06-29T08:55:06.653 回答
0

好吧,基本算术告诉我们 (50 * 4.1 + newvote) / 51 与所有选票的平均值相同。如果您反复执行此操作,最终会出现舍入错误,并且经过一定数量的投票后,甚至不值得为单次投票平均而烦恼,但基本公式是合理的。

于 2012-06-29T08:54:39.830 回答
0

假设:

f = (1+2+3)/3 = 6/3 = 2
  = (2+2+2)/3 = 6/3 = 2

我们知道 f=g。如果我们知道当前评分为 2,总票数为 3,则 2*3=6 作为所有票数的总和。让我们将 4 添加到我们的平均值中,如下所示:

f = 6/3
f' = (6+4)/4 = 2.5
于 2012-06-29T09:00:34.647 回答