ホームページ >バックエンド開発 >PHPの問題 >PHPで非反復乱数を生成する方法

PHPで非反復乱数を生成する方法

PHPz
PHPzオリジナル
2023-04-24 10:52:202368ブラウズ

データ処理を実行するとき、多くの場合、乱数を使用する必要があります。 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 サイトの他の関連記事を参照してください。

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