ホームページ >バックエンド開発 >PHPチュートリアル >特定の範囲内の一意の乱数のリストを効率的に生成するにはどうすればよいですか?

特定の範囲内の一意の乱数のリストを効率的に生成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-07 08:54:12582ブラウズ

How Can I Efficiently Generate a List of Unique Random Numbers Within a Specific Range?

範囲内で一意の乱数を生成する

指定された範囲内で一意の乱数のリストを生成することは、困難な作業となる場合があります。 1 つのアプローチは、乱数を生成し、それが毎回一意であるかどうかを確認することです。ただし、この方法は、広い範囲や多数の乱数の場合は非効率的になる可能性があります。

より最適化されたアプローチは、目的の範囲内の数値の配列を作成し、その配列をシャッフルして順序をランダム化することです。結果の配列には、指定された範囲内の一意の乱数が含まれます。

ランダムな順序で数値の範囲を含む配列の使用:

$numbers = range(1, 20);
shuffle($numbers);

このコードでは、range (1, 20) は、1 から 20 までの数値の配列を作成します。その後、 shuffle() 関数が配列内の数値の順序をランダム化します。この方法は、必要な乱数の数が数値の範囲以下である場合に特に便利です。

ラップされた関数の使用:

より複雑なシナリオの場合、最小値、最大値、および必要な量の乱数を入力として受け取るラップ関数を作成できます。

function UniqueRandomNumbersWithinRange($min, $max, $quantity) {
    $numbers = range($min, $max);
    shuffle($numbers);
    return array_slice($numbers, 0, $quantity);
}

これ関数は数値の初期範囲を取得し、それらをシャッフルし、array_slice() を使用して必要な数の乱数を抽出します。

使用例:

次のコードUniqueRandomNumbersWithinRange() の使用方法を示します。関数:

<?php
print_r(UniqueRandomNumbersWithinRange(0, 25, 5));
?>

結果:

Array
(
    [0] => 14
    [1] => 16
    [2] => 17
    [3] => 20
    [4] => 1
)

このコードは、0 から 25 までの一意の 5 つの乱数の配列を生成します。数値は一意性を確保するためにシャッフルされます。 .

以上が特定の範囲内の一意の乱数のリストを効率的に生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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