Algorithm 比较评级算法

Algorithm 比较评级算法,algorithm,rating,Algorithm,Rating,用例: 假设对象的等级为1到5颗星。 它已经获得50票,平均票数为4.1。 当用户投票(1-5星)时,我们需要重新计算评分 如何实现这种逻辑?问题是我们不知道每一张选票的价值,只知道当前评级和总投票数。好吧,基本的算术告诉我们,(50*4.1+newvote)/51等于所有选票的平均值。如果你反复这样做,最终会出现舍入错误,经过一定数量的投票后,甚至不值得费心在一次投票中求平均值,但基本公式是正确的。好吧,基本算术告诉我们,(50*4.1+newvote)/51与所有投票的平均值相同。如果你反复

用例: 假设对象的等级为1到5颗星。 它已经获得50票,平均票数为4.1。 当用户投票(1-5星)时,我们需要重新计算评分


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

好吧,基本的算术告诉我们,(50*4.1+newvote)/51等于所有选票的平均值。如果你反复这样做,最终会出现舍入错误,经过一定数量的投票后,甚至不值得费心在一次投票中求平均值,但基本公式是正确的。

好吧,基本算术告诉我们,(50*4.1+newvote)/51与所有投票的平均值相同。如果你反复这样做,最终会出现舍入错误,经过一定数量的投票后,甚至不值得费心在一次投票中求平均值,但基本公式是正确的。

新评级=(旧评级*旧计数+当前投票)/(旧计数+1)新评级=(旧评级*旧计数+当前投票)

新评级=(旧评级*旧计数+当前投票)/(oldCount+1)
假设:

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
假设:

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