ホームページ >バックエンド開発 >PHPチュートリアル >リスト内で要素を繰り返さずにランダムに表示するにはどうすればよいですか?

リスト内で要素を繰り返さずにランダムに表示するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-21 12:44:301102ブラウズ

How to Randomly Display Elements without Repeating them in a List?

繰り返しのない一意のランダムなリストの生成

繰り返しのない要素のランダム化は、プログラミングにおける一般的な問題です。これまで遭遇したように、繰り返しが発生する前にすべての要素を 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 レスポンスと統合するには、次の更新を実装できます:

  1. 提案された方法の 1 つを使用してランダムなリスト ID を生成し、データベースに保存します。
  2. ページが更新されるたびに、ランダムなリスト ID を生成し、それがデータベース内の値と一致するかどうかを確認します。
  3. ID が一致しない場合は、リストを表示し、新しい ID をデータベースに追加します。
  4. 20 個のリストがすべて表示されるまで手順 1 ~ 3 を繰り返します。

このアプローチを実装すると、繰り返しが発生する前に 20 個のリストすべてが 1 回表示され、目的の機能が実現されます。 .

以上がリスト内で要素を繰り返さずにランダムに表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。