Алгоритм сравнительной оценки

UseCase: Предположим, что рейтинг объекта составляет от 1 до 5 звезд. Это уже 50 голосов со средним рейтингом 4.1. Когда пользователь делает голосование (1-5 звезд), ему необходимо пересчитать рейтинг.

Как реализовать эту логику? Проблема в том, что мы не знаем ценность каждого голоса, только текущий рейтинг и общее количество голосов.


person Joe.webdev    schedule 29.06.2012    source источник


Ответы (2)


Что ж, базовая арифметика говорит нам, что (50 * 4,1 + новое голосование) / 51 — это то же самое, что и среднее всех голосов. Вы получите ошибки округления, если будете делать это неоднократно, и после определенного количества голосов даже не стоит заморачиваться с усреднением в одном голосовании, но основная формула верна.

person SilverbackNet    schedule 29.06.2012

Предполагая:

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
person SplinterOfChaos    schedule 29.06.2012