On 7/9/2010 3:04 AM, sangprabv wrote:
Dear List,
I'm developing a winner drawing application using PHP+MySQL. As we know that 
MySQL has a built in function RAND() to randomize the result. But using that 
function will only randomize, my goal is the player with higher point gets 
higher posibility when randomizing. Anybody can help? Many thanks.


Here's an idea...

Perform N queries into your table and collect the PK values for all rows where score > rand() (adjust appropriately for the range of scores). N should be an appropriately large number relative to the number of entries you are trying to randomize. N should be at least 1/2 of the total number of rows. For smaller starting sets, the value of N could even be several multiples of your starting set. The more you collect, the more smoothly you will randomize and the more accurate the weights will be.

That way, each potential winner (the higher the score the better) will appear at most N times in the "drawing" table. Those original rows whose scores were never above the rand() threshold may not even appear in the drawing table.

From that weighted table, you can make another random selection for the actual winner.

--
Shawn Green
MySQL Principle Technical Support Engineer
Oracle USA, Inc.
Office: Blountville, TN

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to