ホームページ > バックエンド開発 > PHPチュートリアル > PHP は n 個の非反復ランダム整数を生成します

PHP は n 個の非反復ランダム整数を生成します

WBOY
リリース: 2016-06-20 13:04:32
オリジナル
1201 人が閲覧しました

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 />?>
ログイン後にコピー


注:

1 の場合に使用されます。乱数を生成する mt_rand() 関数。この関数は、rand() よりも平均して 4 倍の速度で乱数を生成します。

2. 配列から重複する値を削除する場合は、array_flip()を使って配列のキーと値を2回交換する「flipメソッド」が使用されます。このアプローチは、array_unique() を使用するよりもはるかに高速です。

3. 配列を返す前に、shuffle() を使用して新しいキー名を配列に割り当て、キー名が 0 から n までの連続した番号であることを確認します。この手順を実行しないと、重複した値を削除するときにキー名が不連続になり、トラバーサルに問題が発生する可能性があります。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート