Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
ORDER BY weight*rand() DESC (zhil) 29/01/2007 - 01:10:56
      Re: ORDER BY weight*rand() DESC (Джони) 30/01/2007 - 14:22:26
      Re: ORDER BY weight*rand() DESC (zhil) 01/02/2007 - 03:11:34
      Re: ORDER BY weight*rand() DESC (dxfan) 01/02/2007 - 11:09:51
      Re: ORDER BY weight*rand() DESC (zhil) 10/02/2007 - 23:03:41

> Original message text:
> From: zhil - 29/01/2007 - 01:10:56
> Subject:ORDER BY weight*rand() DESC
> -----------------
> Hi ALL!
>
> Возникла такая проблема.
> Нужно выбрать случайную запись из таблицы, причем используя поле weight для задания "веса" записи.
> Иными словами
>
> id/title/weight
>
> 1/sample/2
> 2/sample 2/1
> 3/sample 3/5
>
> "Общий вес" - 8
> 1-я запись должна вылезать с вероятностью 2/8,
> 2-я запись должна вылезать с вероятностью 1/8,
> 3-я запись должна вылезать с вероятностью 5/8
>
> Первая идея - ORDER BY weight*rand() DESC
> но как показал эксперимент и недолгие размышления - это неверное решение, записи с большим весом получают гораздо более серьезный приоритет.
>
> У кого нить есть идеи как это реализовать??
>
> Заранее сенкс.
>
>


From: zhil - 10/02/2007 - 23:03:41
Subject:ORDER BY weight*rand() DESC
-----------------
>select weight*rand(), *
>from ...
>ORDER BY 1 DESC

>order by отрабатывает уже с готовым набором данных

а какая собственно разница?

написал простой тест.
в таблице 2 поля,
1е - weight =1
2е - weight =5
сделал выборку 10000 раз, результаты - 9000 раз 2-е, 1000 раз 1-е. никак не 1к5

тест 2
1е - weight = 1
2е - weight = 10
сделал выборку 10000 раз, результаты - 9527 раз 2-е, 472 раза 1-е.

тенденция странная - почти ровно в 2 раза больше чем надо и там, и там. Но это еще простой пример, когда банеров, больше чем 2 - вообще бардак.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
30676



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |