ホームページ >バックエンド開発 >PHPチュートリアル >リスト内で要素を繰り返さずにランダムに表示するにはどうすればよいですか?
繰り返しのない一意のランダムなリストの生成
繰り返しのない要素のランダム化は、プログラミングにおける一般的な問題です。これまで遭遇したように、繰り返しが発生する前にすべての要素を 1 回表示する必要がある特定のシナリオでは、単純な rand() 関数の使用では十分ではない可能性があります。
この問題に対する最も効果的な方法は、考えられるすべての数字のリストを作成し、それらをシャッフルして順序をランダム化し、これらの数字を使用して目的のリストを取得します。最適化されたソリューションは次のとおりです。
<code class="php">$numbers = range(0, 19); shuffle($numbers);</code>
このコードは、0 から 19 までの数値を含む配列を作成し、それらをシャッフルしてランダムな順序を取得します。その後、数値配列を反復処理して、$businesses 配列から対応するリストを取得できます。このアプローチを使用すると、20 件のリストすべてが繰り返される前に 1 回表示されます。
別の方法は、カスタム関数を使用することです。
<code class="php">function randomGen($min, $max, $quantity) { $numbers = range($min, $max); shuffle($numbers); return array_slice($numbers, 0, $quantity); }</code>
この関数は、最小パラメータとパラメータの 3 つのパラメータを受け取ります。最大値と乱数の必要な量。指定された範囲内の乱数の配列を生成し、指定された数の要素を返します。
あなたの場合、Yelp リストの範囲内で 20 個の一意の乱数を生成できます:
<code class="php">print_r(randomGen(0, 20, 20)); // generates 20 unique random numbers</code>
これらの手法を Yelp API レスポンスと統合するには、次の更新を実装できます:
このアプローチを実装すると、繰り返しが発生する前に 20 個のリストすべてが 1 回表示され、目的の機能が実現されます。 .
以上がリスト内で要素を繰り返さずにランダムに表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。