用例: 假设对象的评级是1到5星。 已经有50票,平均评分为4.1。 当用户进行投票(1-5周)时,需要重新计算评分。
如何实现该逻辑?问题是我们不知道每次投票的价值,只知道当前的评级和总票数。
答案 0 :(得分:4)
newRating = (oldRating * oldCount + currentVote) / (oldCount + 1)
答案 1 :(得分:0)
嗯,基本算术告诉我们(50 * 4.1 + newvote)/ 51与所有投票的平均值相同。如果你反复这样做,你最终会得到舍入错误,并且经过一定数量的投票之后,甚至不值得在一次投票中平均,但基本公式是合理的。
答案 2 :(得分: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