php は rand を使用して非反復乱数を生成します。まず配列内の各数値に添え字の順に値を割り当てます。次に、[i, $num-1] の範囲の乱数を取得し始めます。 $ rand] を実行し、取得した乱数 [$rand] を配列内の現在位置として使用し、最後に、変更されていないキーと値のペアに対して交互の操作を実行します。
php は rand を使用して非反復乱数を生成します:
/* * array unique_rand( int $min, int $max, int $num ) * 生成一定数量的不重复随机数 * $min 和 $max: 指定随机数的范围 * $num: 指定生成数量 */ function unique_rand($min, $max, $num) { //初始化变量为0 $count = 0; //建一个新数组 $return = array(); while ($count < $num) { //在一定范围内随机生成一个数放入数组中 $return[] = mt_rand($min, $max); //去除数组中的重复值用了“翻翻法”,就是用array_flip()把数组的key和value交换两次。这种做法比用 array_unique() 快得多。 $return = array_flip(array_flip($return)); //将数组的数量存入变量count中 $count = count($return); } //为数组赋予新的键名 shuffle($return); return $return; }
このメソッドはストアするたびに乱数を取得します。それを配列に入れて重複を削除します...非効率です...PHP を使用して n 範囲 (m<=n)
function rand_num($num='200'){ for($i=0;$i<$num;$i++){ $n[$i] = $i; } for($i=0;$i<$num;$i++){ $rand = mt_rand($i,$num-1); //数组 随机数交换下标 if($n[$i] == $i){ $n[$i] = $n[$rand]; $n[$rand] = $i; } } }
の m 個の非繰り返し乱数を効率的に生成したくありません。 1. 最初のステップは、配列内の各数値に添字の順序で値を割り当て、対応する順序で配置された $num 個の数値キー値の配列を取得することです。
2. 2 番目のステップでは、範囲 [i, $num-1] の乱数 $rand の取得を開始し、取得した乱数 $rand を現在位置キー i に対応する添字として使用します。配列値 $rand 内で、配列内のキー $rand の添字に対応する値を i に置き換えます。これは実際には配列キー値の相互交換です。意味は、生成された乱数を値の範囲 [i,$num-1] から除外し、次回は残りの数値 [i 1,num-1] から値を取得することです。
3. 3 番目のステップでは、値の重複を避けるために、変更されていないキーと値のペアに対してのみ交互操作を実行します。つまり、元の配列が順番に配置されている位置 (キー) に対して交互操作を実行します。 == 値)。
4. 終了。
関連する無料学習の推奨事項:php プログラミング
以上がPHPでrandを使用して非反復乱数を生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。