2009-07-16 37 views

回答

6

Here's關於這方面的信息。

當創建它時,每篇文章都會被分配一個介於0和1之間的隨機數(這些數據在SQL中進行索引,這使得選擇更快)。當您點擊隨機文章時,它會生成一個目標隨機數,然後返回記錄的隨機數最接近此目標的文章。

如果你有興趣,你可以閱讀實際代碼here

+0

它如何返回記錄的隨機數最接近此目標的文章?你認爲它先排序整個表格嗎? – 2009-07-16 10:48:04

2

MediaWiki.org

鏈接到MediaWiki是一個免費的軟件wiki 包寫在PHP,原本 爲維基百科的使用。現在由 非營利維基媒體基金會的其他幾個項目,並通過 許多其他的維基,包括本 網站的MediaWiki家庭中使用 。

MediaWiki是開源的,所以你可以下載代碼並檢查它,看看它們是如何實現這個功能的。

3

Something along this lines

"SELECT cur_id,cur_title 
     FROM cur USE INDEX (cur_random) 
     WHERE cur_namespace=0 AND cur_is_redirect=0 
     AND cur_random>RAND() 
     ORDER BY cur_random 
     LIMIT 1" 
1

如果你看一下the source,他們使用PHP/MySQL的排序,並通過對他們的索引預生成的隨機值(page_random列)篩選器的網頁。