PHP は n 個の非繰り返しランダム整数を生成します
特定の整数範囲で n 個の非繰り返しランダム整数を生成する必要があります。具体的に機能をどう設計するか?
乱数を配列に保存し、配列内の重複する値を削除して、一定数の非反復乱数を生成します。
n 個の非反復ランダム整数を生成する PHP の実装コードは次のとおりです。
<?php<br />/*<br />* array unique_rand( int $min, int $max, int $num )<br />* 生成一定数量的不重复随机整数<br />* $min 和 $max: 指定随机数的范围<br />* $num: 指定生成数量<br />*/<br />function unique_rand($min, $max, $num) {<br /> $count = 0;<br /> $return = array();<br /> while ($count < $num) {<br /> $return[] = mt_rand($min, $max);<br /> $return = array_flip(array_flip($return));<br /> $count = count($return);<br /> }<br /> shuffle($return);<br /> return $return;<br />}<br /><br />$arr = unique_rand(1, 25, 16);<br />sort($arr);<br /><br />$result = '';<br />for($i=0; $i < count($arr);$i++)<br />{<br /> $result .= $arr[$i].',';<br />}<br />$result = substr($result, 0, -1);<br />echo $result;<br />?>
2. 配列から重複する値を削除する場合は、array_flip()を使って配列のキーと値を2回交換する「flipメソッド」が使用されます。このアプローチは、array_unique() を使用するよりもはるかに高速です。
3. 配列を返す前に、shuffle() を使用して新しいキー名を配列に割り当て、キー名が 0 から n までの連続した番号であることを確認します。この手順を実行しないと、重複した値を削除するときにキー名が不連続になり、トラバーサルに問題が発生する可能性があります。