我正在構建一個網站,每次頁面刷新時都會隨機顯示一個yelp列表。 yelp search api返回數組中的20個列表。現在,我使用PHP的函數rand(0,19)在每次刷新頁面時生成一個隨機列表($ business [rand(0,19)])。生成沒有重複的隨機數字
有人可以引用我一個更聰明的方法隨機化嗎?我想在重複其中任何一項之前顯示全部20個列表。什麼是處理這個問題的首選方法?
以下答案不起作用,因爲每次刷新頁面時都會重新創建數字。我猜我需要儲存我已經使用過的號碼嗎?
$numbers = range(0, 19);
shuffle($numbers);
// Handle Yelp response data
$response = json_decode($data);
$RANDOM = rand(1,19);
$business = $response->businesses;
echo "<img border=0 src='".$business[$RANDOM]->image_url."'><br/>";
echo $business[$RANDOM]->name."<br/>";
echo "<img border=0 src='".$business[$RANDOM]->rating_img_url_large."'><br/>";
?>
最簡單的方法是預先填充一個清理過的隨機值列表。你爲什麼不提前創建訂單,並選擇最後一個沒有顯示的訂單。對於臨時用戶來說,這看起來是隨機的。 –
你如何保留所有20個以顯示他們?你是否在本地存儲列表,或者api是否根據請求向你發送相同的列表? –
查看'Fisher Yates',或查看http://stackoverflow.com/questions/8116872/generate-random-numbers-in-array/8116947#8116947。 – paxdiablo