2016-04-29 60 views
-1

我想建立一個網站,在那裏我會顯示電影評級。我想在那裏顯示一部電影的平均評分,並且我想根據不同來源的評分來計算平均評分。問題在於,在某些期望的消息來源中,少數人對電影進行了評級,其他數據來自數千人。例如。電影「亡靈」。它在IMDB中的平均評分爲7.9(已有10000個用戶投票),在「XYZ」網站中也有9.9(10位用戶已投票)。爲了計算這個平均值,如何看起來像一個公式?根據源自不同來源的評分計算平均評分的公式是多少?

最初我想到的僅僅是根據用戶的數量來分配權重,但我有這種感覺,我失去了一些東西。有任何想法嗎?

回答

0

平均= sum_of(得分+ NUMBER_OF_PEOPLE)/ total_sum_of_people

+0

什麼是number_of_people和total_sum_of_people?它是一樣的嗎? – Hien

0

如果你想使每一票重量相同,那麼你應該通過投票加權平均的,因爲你最初認爲。公式將是(9.9 * 10 + 7.8 * 10k)/10010。但是,您可以使用任意權重來衡量某些網站的用戶比其他網站的用戶多。

最後,請注意,根據內存和避免溢出(如果有的話),使用累加器可以更好地完成對於平均值的計算算法。

acc = scores[0]; u = users[0]; 
for (i = 1; i < nb_sites; i++) 
    r = u/(u + users[i]) 
    acc = acc * r + users[i] * (1 - r) 
    u += users[i] 
return acc