2013-03-08 54 views
2

我在一個陣列中的多個圖像文件名,並想以產生固定一整天隨機圖像,所以我想利用日期使用固定的種子在同一天(「YMD」)這顆種子每天都會變化,從而每天都會產生新的獨特種子。array_rand種子

問題是,array_rand不接受種子作爲參數。

回答

1

具有相同的種子將不能保證你每次都會得到相同的號碼。我想創造一些僞隨機函數,例如依賴,從年,月,日,而不是小時,分鐘,秒,只會從這些值給出相同的結果,例如

function pseudorandom_day_image_index($array_of_pictures){ 
    $year=date('Y'); 
    $month=date('m'); 
    $day=date('d'); 
    return ($year*$month*$day) % count($array_of_pictures); 
} 

這會給你常數(一天)的圖片的索引

+0

我編輯的問題,因爲它是不明確的。 array_rand不接受種子作爲輸入。 – fawzib 2013-03-08 15:17:20

+0

您不需要獲取隨機數組,而是一張圖片。我reedited答案和功能給這個指數。 G_G也是個好主意,因爲它的數學基礎是一樣的。 – Voitcus 2013-03-08 15:21:13

+0

警告!你的代碼有一個嚴重的錯誤!如果圖像的數量(數組長度)大於給定的$ year * $ month * $ day(可能是這種情況!),您的代碼將最終只選擇一小部分圖像。 – 2013-03-08 15:57:36

1

計算日期(「年月日」)返回人類可讀的字符串的哈希值,你會得到一個唯一的種子,每天

類似:

$seed = md5(date("Ymd")); 

初始化YOUT蘭特與功能你的一天種子:

srand((int)$seed); 

新的數組索引將是:

$random_array_index = $rand() % $array_size; 
+0

感謝你的小費,但問題是,array_rand犯規接受種子輸入。我應該怎麼做? – fawzib 2013-03-08 15:12:51

+0

問題在哪裏?讓我們用另一個PRNG函數來計算你的數組索引! ;)$ array_index = rand()%$ arraysize;看看我的回答,我只是修改它 – 2013-03-08 15:16:38

+0

記得函數srand需要很長的數目和散列包含字符 – fawzib 2013-03-08 15:27:45