ホームページ >バックエンド開発 >PHPチュートリアル >包括的なリストランダマイザーのために反復せずに乱数を生成するにはどうすればよいですか?

包括的なリストランダマイザーのために反復せずに乱数を生成するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-21 11:49:31810ブラウズ

How to Generate Random Numbers without Repetition for a Comprehensive Listing Randomizer?

繰り返しのない乱数の生成: 総合ガイド

Yelp のリストをランダム化する Web サイトを開発するという探求の中で、あなたは次のような方法を模索しています。繰り返しが発生する前に、20 件のリストすべてが 1 回表示されるようにします。この課題に対処するためのさまざまなアプローチを検討してみましょう。

PHP の rand(0, 19) アプローチ

現在の実装では、PHP の rand(0, 19) を使用してYelp リストを選択するためのランダムなインデックス。ただし、この方法には制限があります。番号を繰り返すことができるということです。これを克服するには、より洗練されたアプローチが必要です。

数値の範囲をシャッフルする

効果的な解決策の 1 つは、リストのインデックスを表す数値の範囲をシャッフルすることです。これは、次のように range() と shuffle() を使用して実現できます。

<code class="php">$numbers = range(0, 19);
shuffle($numbers);</code>

これにより、0 から 19 までの数値をランダムな順序で含む配列が作成されます。

を使用した代替解決策randomGen() 関数

もう 1 つのアプローチは、最小値、最大値、数量をパラメーターとして受け入れるカスタムの randomaGen() 関数を使用することです。指定された範囲内の一意の乱数のリストを生成します:

<code class="php">function randomGen($min, $max, $quantity) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $quantity);
}

print_r(randomGen(0, 20, 20));  // generates 20 unique random numbers</code>

使用された数値をデータベースに保存し、更新する

すべてのリストが表示されるようにするため繰り返して、表示されたリストをデータベースに保存できます。ランダムなリストを表示するたびに、その ID がデータベース内のいずれかと一致するかどうかを確認します。そうでない場合は、リストを表示し、その ID をデータベースに追加します。すべてのリストが表示されるまで、このプロセスを繰り返します。

このメソッドにより、繰り返しが発生する前に、各リストが 1 回だけ表示されます。

以上が包括的なリストランダマイザーのために反復せずに乱数を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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