データ処理を実行するとき、多くの場合、乱数を使用する必要があります。 PHP では、組み込み関数 rand() を使用して乱数を簡単に生成できます。ただし、 rand() 関数は繰り返しの数値を生成するため、生成された乱数が繰り返されないようにするには、他のメソッドを使用する必要があります。
この記事では、2 つの方法で非反復乱数を生成する方法を紹介します。
方法 1: shuffle() 関数を使用する
PHP で shuffle() 関数を使用すると、配列の順序をスクランブルしてから、array_pop() 関数を使用して配列を取り出すことができます。配列の最後 乱数としての 1 つの要素。
サンプル コード:
$numbers = range(1, 100); shuffle($numbers); $random_number = array_pop($numbers);
上記のコードでは、最初に range() 関数を使用して 1 から 100 までの数値の配列を生成し、次に shuffle() 関数を使用して中断します。配列の順序。最後に、array_pop() 関数を使用して、配列の最後の要素を乱数として取り出します。
rand() 関数と比較して、このメソッドは数値を繰り返し生成しません。ただし、配列のサイズは乱数生成のパフォーマンスに影響します。したがって、大量の乱数を生成する必要がある場合には、この方法はお勧めできません。
方法 2: SplFixedArray クラスを使用する
PHP 5.3 以降、固定サイズの配列を提供する SplFixedArray クラスが導入されました。つまり、配列サイズは変更できません。したがって、この方法は、多数の乱数を処理する場合にパフォーマンスが向上します。
サンプル コード:
$numbers = new SplFixedArray(100); for ($i = 0; $i < 100; $i++) { $numbers[$i] = $i + 1; } $numbers->shuffle(); $random_number = $numbers->top();
上記のコードでは、まず SplFixedArray() 関数を使用して長さ 100 の固定サイズの配列を生成し、次に for() ループを使用します。配列に値を代入します。次に、 shuffle() 関数を使用して配列の順序をシャッフルし、最後に top() 関数を使用して配列の最後の要素を乱数として取り出します。
方法 1 と比較して、この方法はより効率的でメモリに優しいです。
結論
実際のアプリケーションでは、データ量とパフォーマンス要件に基づいて、乱数を生成するさまざまな方法を選択する必要があります。データ量が少ない場合は、方法 1 を使用して乱数を生成できます。データ量が多く、パフォーマンス要件が高い場合は、方法 2 を使用できます。
以上がPHPで非反復乱数を生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。