Столкнулся с проблемой подсчёта рейтинга, среднее никак не подходит, так как к примеру за первое фото проголосовало 100 человек и среднее 8, а за 2ое 1 и среднее 10, то никак второе выше первого считать нельзя. Нарыл вот такую статью. может кому и пригодиться
Алгоритм рассчета рейтинга композиции
Для любой композиции рассчитывается два рейтинга – Общий (за весь период) и Недельный (за текущую неделю). Общий рейтинг отображается на странице песни большими белыми цифрами. Недельный отображается на странице песни под общим рейтингом.
Оба рейтинга рассчитываются с помощью одного алгоритма. Разница лишь в том, что для общего рейтинга в расчет идут все оценки, отданные за композицию, а для недельного - лишь за текущую неделю.
Пояснения для переменных алгоритма:
song_sum = сумма всех оценок за композицию – все оценки, поданные за композицию, складываются по следующим правилам: оценка “хорошо” считаются как +1, “хорошо” с отзывом как +2, “плохо” без отзыва – 1, “плохо” с отзывом – 2, оценка “не знаю”, с отзывом и без отзыва – 0 (пусть это и 0, они все равно играют свою роль, смотрите ниже song_votes и song_average)
song_votes = общее количество всех оценок, поданных за композицию
song_average = song_sum / song_votes – средняя оценка для композиции
all_average = средняя оценка всех композиций на сайте, суммируются общие рейтинги всех композиций и делятся на количество композиций на сайте – пересчитывается после каждой новой оценки (на момент публикации алгоритма - 0.414)
min_votes = минимальное количество оценок (на данный момент 10), до достижения которого рейтинг композиции стремится к all_average, а после достижения которого стремится к song_average
Итоговая формула рассчета рейтинга композиции:
rating = (song_votes / (song_votes+min_votes)) * song_average
+ (min_votes / (song_votes+min_votes)) * all_average
Первое слагаемое:
(song_votes / (song_votes+min_votes)) * song_average
пока голосов меньше min_votes, song_average (средняя оценка композиции) мало влияет на общий рейтинг композиции. Как только голосов становится больше min_votes, вес song_average в общем рейтинге композиции начинает увеличиваться.
Второе слагаемое:
(min_votes / (song_votes+min_votes)) * all_average
пока голосов меньше min_votes, all_average (средний рейтинг композиций на сайте) существенно влияет на общий рейтинг композиции. С увеличением количества голосов влияние all_average в общем рейтинге композиции уменьшается.
Итак, итоговый рейтинг при малом количестве оценок стремится к среднему рейтингу, а при большом количестве – к рейтингу, рассчитанному по фактическим оценкам композиции.