Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Рейтинги - математика
 
 автор: Richard Ferlow   (22.06.2007 в 17:38)   письмо автору
 
 


    $votes = $DB->query("SELECT *, SUM(vote) as votes,COUNT(vote) as counts, SUM(vote)/COUNT(vote) as result FROM " . TABLE_PREFIX . "votes GROUP BY imageid ORDER BY result DESC, counts DESC LIMIT 0,100");


Запрос - думаю тут все понятно.

Вопрос - верно ли он составлен и чисто логический вопрос

За фото голосуют три человека, двое ставят 5ть, один ставит 3, за другое фото голосует один и ставит пять - у какого фото рейтинг выходит выше должен быть ?

   
 
 автор: Prihod   (22.06.2007 в 17:51)   письмо автору
 
   для: Richard Ferlow   (22.06.2007 в 17:38)
 

($sum_golos/$count_golos)*(1-1/$count_golos)

   
 
 автор: Richard Ferlow   (22.06.2007 в 17:59)   письмо автору
 
   для: Prihod   (22.06.2007 в 17:51)
 

Так, это че такое получится ?
(1-1/$count_golos) - вот это как понять ?

   
 
 автор: Unkind   (22.06.2007 в 18:12)   письмо автору
 
   для: Richard Ferlow   (22.06.2007 в 17:38)
 

Вы что? Конечно там, где один человек ставит "5" - 100%.
А там где хоть один человек не ставит "5" будет ВСЕГДА меньше 100%, т.е. меньше пяти.

   
 
 автор: Richard Ferlow   (22.06.2007 в 18:36)   письмо автору
 
   для: Unkind   (22.06.2007 в 18:12)
 

Да бывает, замкнет, и не такое высчитывать начинаешь :)

   
 
 автор: Trianon   (22.06.2007 в 18:19)   письмо автору
 
   для: Richard Ferlow   (22.06.2007 в 17:38)
 

Вы можете отсекать статистически несостоятельные рейтинги.
HAVING counts > 7;
И не пишите звездочку, пишите SELECT image id, SUM(.....

   
 
 автор: Richard Ferlow   (22.06.2007 в 18:36)   письмо автору
 
   для: Trianon   (22.06.2007 в 18:19)
 

Вот действительно хорошая мысль

   
 
 автор: Osipov   (25.06.2007 в 15:28)   письмо автору
 
   для: Trianon   (22.06.2007 в 18:19)
 

Я, когда сталкивался с аналогичной проблемой подобрал коэфициенты так:

<Средний балл>*(<кол-во голосов>^1/2)/(<кол-во голосов>^1/2+1)
Так, если один голос, то застчитывается половина баллов, и т. п. я прикинул, так где-то должно быть нормально. Степень 1/2 может варьироваться в зависимости от "значимости" голоса.

А если не учитывать меньше семи голосов, то те которые получили шесть пятёрок окажутся ниже тех, у которых много двоек, что неправильно.

   
 
 автор: Trianon   (25.06.2007 в 15:30)   письмо автору
 
   для: Osipov   (25.06.2007 в 15:28)
 

они не окажутся ниже.
Они окажутся не представлены в рейтинге.
Следующий же голос вернет их в рейтинг на нужную позицию.

   
 
 автор: Prihod   (25.06.2007 в 17:29)   письмо автору
 
   для: Trianon   (25.06.2007 в 15:30)
 

>Так, это че такое получится ?
>(1-1/$count_golos) - вот это как понять ?
это называется асимптотическое приближаение к единице, которое позволяет снизить рейтинг в зависимости от количества голосов, но тут есть один недостаток , если проголосовал один человек то (1-1/$count_golos) будет равно 0

   
 
 автор: Trianon   (27.06.2007 в 11:18)   письмо автору
 
   для: Prihod   (25.06.2007 в 17:29)
 

Это не мой ответ.

   
 
 автор: Richard Ferlow   (27.06.2007 в 19:21)   письмо автору
 
   для: Osipov   (25.06.2007 в 15:28)
 

<Средний балл>*(<кол-во голосов>^1/2)/(<кол-во голосов>^1/2+1)

Ммм, я в такой математике не силен :)
По этому значению сортировку делать ?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования