PHPで指定された範囲内で一意の数値を生成する方法

王林
リリース: 2023-03-03 07:24:01
オリジナル
2438 人が閲覧しました

指定された範囲内で一意の数値を生成する

php メソッド: 最初に mt_rand() 関数を通じて乱数を生成し、次に array_flip() 関数を通じて重複する数値を削除します。 array_flip() 関数は、配列内のキー名と、対応する関連キー値を反転するために使用されます。

PHPで指定された範囲内で一意の数値を生成する方法

関数の紹介:

(推奨チュートリアル: 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 サイトの他の関連記事を参照してください。

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