You are here: Re: Choosing a random entry in a table by "weight" « PHP Programming Language « IT news, forums, messages
Re: Choosing a random entry in a table by "weight"

Posted by Floortje on 05/28/07 11:58

Rami Elomaa wrote:
> alpha.beta0@googlemail.com kirjoitti:
>> I have a MySQL table of servers, I use RAND() to pick a random server
>> to use each time, but how can I add a number to each server entry that
>> allows it be to picked more often than the other 20 servers?
>>
>> For example Server1's weight is 80 and Server2's weight is 40 and
>> hence Server1 is more likely to be picked than the others.
>>
>
> In theory like this: pick a random weight and take into group all the
> items that weigh more, it's more likely that heavier items are taken
> into the group, than the lighter. From the group you have created, pick
> one randomly. If no items were in the group, your random weight was too
> big, so you might limit it to < maxweight, so that always at least one
> item is picked.
>
> Transforming this into a query is another thing. This is very rough
> example but you'll get the idea, I suppose:
>
> SELECT * FROM ( SELECT * FROM servers WHERE weight > RAND() ) ORDER BY
> RAND() LIMIT 1,1

Nice .. real nice but wrong :-(

say you have this
a-2
b-1
c-1
d-1

Valid random weight numbers are 1 and 2 (both 50%)

Then your chances of picking A are 62.5% while B,C,D only get a 12.5%
change of being picked (instead of 40-20-20-20)

--
Arjen
www.hondenpage.com

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация