私は、ページが更新されるたびに奇数リストをランダムに表示するウェブサイトを構築しています。 yelp search apiは20のリストを配列に返します。今、PHPの関数rand(0,19)を使用して、ページがリフレッシュされるたびにランダムなリストを生成しています($ businesses [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