Making more recent items more likely to be drawn

Posted by bobo on Stack Overflow See other posts from Stack Overflow or by bobo
Published on 2010-06-02T15:59:39Z Indexed on 2010/06/02 16:04 UTC
Read the original article Hit count: 148

Filed under:
|

There are a few hundred of book records in the database and each record has a publish time. In the homepage of the website, I am required to write some codes to randomly pick 10 books and put them there. The requirement is that newer books need to have higher chances of getting displayed.

Since the time is an integer, I am thinking like this to calculate the probability for each book:

Probability of a book to be drawn = (current time - publish time of the book) / ((current time - publish time of the book1) +  (current time - publish time of the book1) + ... (current time - publish time of the bookn))

After a book is drawn, the next round of the loop will minus the (current time - publish time of the book) from the denominator and recalculate the probability for each of the remaining books, the loop continues until 10 books have been drawn.

Is this algorithm a correct one?

By the way, the website is written in PHP.

Feel free to suggest some PHP codes if you have a better algorithm in your mind.

Many thanks to you all.

© Stack Overflow or respective owner

Related posts about php

Related posts about algorithm