2014-09-21 82 views
0

我有我的照片存儲在服務器文件命名的圖像,有超過300個。在數據庫中,我將這些圖片分配給了ID。隨機圖像不重複php

在數據庫就像

ID: 300 
photoPath: "images/300.png" 

現在我需要通過隨機不重複每刷新後向他們展示在網站上。我通過在隨機生成它們在PHP

mysqli_query($con, "SELECT * FROM images ORDER BY rand() LIMIT 1"); 
$row = mysqli_fetch_assoc($res); // I get that one image's ID and path 

現在我以某種方式需要確保刷新後的圖像非重複。我認爲我應該將圖像的ID寫入cookie,稍後檢查是否顯示帶有此ID的圖片。但我該怎麼做呢?我應該在一個cookie中創建ID數組嗎?

回答

0

有向非重複的隨機數問題,有三種解決方案一般:

  • 如果你想從一個大範圍的幾個號碼,然後選擇一個並拒絕它,如果它是一個重複。如果範圍很大,那麼這不會造成太多的重複嘗試。

  • 如果你想從很小的範圍內得到很多數字,那麼在數組中設置所有的數字並對數組進行混洗。 Fisher-Yates算法是數組混排的標準。從混洗陣列中依次選取隨機數。

  • 如果你想要大量的數字,然後使用適當大小的加密算法。例如。對於64位數字使用DES並按順序加密0,1,2,3 ...。輸出保證是唯一的,因爲加密是可逆的。快速布丁密碼可以設置爲任何方便的數字範圍。