指定された範囲内で一意の数値を生成する
php メソッド: 最初に mt_rand() 関数を通じて乱数を生成し、次に array_flip() 関数を通じて重複する数値を削除します。 array_flip() 関数は、配列内のキー名と、対応する関連キー値を反転するために使用されます。
関数の紹介:
(推奨チュートリアル: php チュートリアル)
mt_rand() 関数メルセンヌ ツイスター アルゴリズムを使用してランダムな整数を生成します。最小 (または 0) と最大 (または mt_getrandmax()) の間のランダムな整数。 max
ヒント: この関数はランダムな値を生成する場合に適しており、rand() 関数よりも 4 倍速く結果を返します。
array_flip() 関数は、配列内のキー名および対応する関連キー値を反転/交換するために使用されます。反転が成功すると、反転された配列が返されます。反転が失敗した場合は、NULL が返されます。
コード実装:
<?php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数,指定的范围内整数的数量必须 * 比要生成的随机数数量大 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { $count = 0; $return = array(); while ($count < $num) { $return[] = mt_rand($min, $max); $return = array_flip(array_flip($return)); $count = count($return); } //打乱数组,重新赋予数组新的下标 shuffle($return); return $return; } //生成10个1到100范围内的不重复随机数 $arr = unique_rand(1, 100, 10); echo implode($arr, ","); ?>
プログラム実行結果:
48,5,19,36,63,72,82,77,46,16
以上がPHPで指定された範囲内で一意の数値を生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。