ホームページ >バックエンド開発 >PHPチュートリアル >PHP は範囲外の乱数をランダムに生成します
アイデア: 生成された乱数を配列に保存し、配列内の重複する値を削除して、一定数の非反復乱数を生成します。
PHP Web サイト開発では、指定された範囲内で特定の数の非反復乱数を生成する必要がある場合がありますが、乱数を生成するこの関数を具体的に設計するにはどうすればよいでしょうか?ランダムに生成された数値を配列に格納できますが、格納中に重複する値を削除することで、一定数の非繰り返しの乱数を生成できます。
指定した範囲の値を配列に格納し、shuffle($array) を使用して配列を中断し、特定の数の値をインターセプトすることもできます。ただし、後者の方法では、指定した乱数の範囲が大きすぎる場合、より大きな配列が生成されます。
最初のアプローチのコードを以下に示します。2 番目のアプローチはより単純です。
<?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 サイトの他の関連記事を参照してください。