Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Рейтинг автора в блоге


Автор: alexey664655 12.8.2019, 16:32
Прошу помощи, не могу сообразить, как сделать правильную формулу рейтинга автора в блоге.   
Имеется:
Код


$ratingsum; // Сумма всех голосов
$ratingcount; // Сумма всех проголосовавших
$contentsum;  // сумма всех статей автора

Автор: ksnk 12.8.2019, 16:43
А голос - это что? Что-то типа числа 0-9 для одного юзера для одной статьи ?
Чем отличаются 
$ratingsum; // Сумма всех голосов
и 
$ratingcount; // Сумма всех проголосовавших

Автор: alexey664655 12.8.2019, 17:14
Надо чтоб рейтинг автора зависел от количества его статей и людей проголосовавших за эти статьи.
Проголосовать может в одной статье человек один раз  - максимальная оценка 5, а минимальная 1 

$ratingsum; - Это сумма всех голосов во всех статьях автора
$ratingcount; - Это сумма всех проголосовавших людей (уникальных) во всех статьях автора

Автор: Vardoulacha 12.8.2019, 17:22
Что это делает в разделе про PHP?

Вопрос просто про алгоритмы.

Вы сначала на бумажке словами напишите формулу (т.н. алгоритм), а потом уже программируйте эту формулу на ЯП.

Рейтинг автора = кол.во статей автора * (сумма рейтингов всех статей автора / 100)

Автор: ksnk 12.8.2019, 17:49
$ratingcount; - Это сумма количество всех проголосовавших людей (уникальных) во всех статьях 
?

а количество проголосовавших за этого автора есть ? Тогда средняя оценка за голос автору и будет рейтингом. а так - не хватает данных. Хотя можно рейтингом считать просто сумму всех оценок автору. При достаточно большой продолжительности опроса - у всех статей будут примерно одинаковое количество оценивающих...


Автор: ksnk 12.8.2019, 18:19
Vardoulacha, в твоей формуле автор, написавший 9 статей со средним рейтингом 1 будет иметь такой же рейтинг, как и автор, написавший одну статью с рейтингом 9 ?

Автор: alexey664655 12.8.2019, 18:35
Вот и я задумался, как можно наиболее правильно вывести рейтинг автора?

Данные могу вывести только такие:
$ratingsum; - сумма всех голосов во всех статьях автора 
$ratingcount;- количество всех проголосовавших людей (уникальных) во всех статьях автора
$contentsum;  -  количество статей у автора

Автор: ksnk 12.8.2019, 19:03
Цитата(alexey664655 @  12.8.2019,  18:35 Найти цитируемый пост)
$ratingsum; - сумма всех голосов во всех статьях автора 
$ratingcount;- количество всех проголосовавших людей (уникальных) во всех статьях автора

Дык, тогда все просто, средняя оценка за голос - $ratingsum/$ratingcount - считай это рейтингом. Тут будет не совсем справедливо для автора, написавшего 100 статей с рейтингом X и 1 статью с тем же рейтингом. Но данных маловато, для более "справедливого" рейтинга. Вообще - рейтинг нужно бы считать как пару чисел - "Рейтинг графомана" - количество статей и "Рейтинг пользы" - среднюю оценку - по делу пишет или фигню какую-то... smile 

Автор: alexey664655 12.8.2019, 19:47
Других данных просто нет, но надо чтоб была справедливость. Наверно без коэффициента не обойтись.
Например:
$rating= ($ratingsum/$ratingcount)+($contentsum*0.1);
Где 0.1 - понижающий  коэффициент чтоб число было небольшое.

Автор: ksnk 13.8.2019, 15:22
Со справедливостью все сильно субьективно. пусть будет примерно так - за большой вклад в библиотеку статей полагается бонус, но не больше половины максимального рейтинга. Рейтинг считается как средняя оценка голоса + количество статей
= ($ratingsum/$ratingcount)+(4*(1-1/(1+$contentsum)))
Тоже не особо справедливо, но вроде получше...

P.S. формулу заменил на более правильную



Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)