ホームページ  >  記事  >  バックエンド開発  >  PHPで非反復乱数を生成する方法

PHPで非反復乱数を生成する方法

不言
不言オリジナル
2018-04-09 17:51:161923ブラウズ

この記事では、主に PHP で非反復乱数を生成する方法を説明します。お役に立てれば幸いです。


1. 非繰り返し乱数を実装するための PHP 組み込み関数


要件: 配列を生成するには、この配列には 10 個の要素があり、すべて整数であり、非繰り返しランダムです1 ~ 60 の数字。
コード:

<?php   
    function get_randoms($min,$max,$num){  
       $count = 0;  
       $res = array();  
       while($count<$num){  
            $res[] = mt_random($min,$max);  
            $res = array_flip(array_flip($res));   
            $count = count($res);  
       }  
       return $res;  
    }  
$result = get_randoms(1,60,10);  
?>

ここで、$count は結果配列の数を表します。これにより、while ループ内で結果配列の数がターゲット数よりも少なくなります。これにより、ターゲット番号の配列である $count が得られます。

各サイクル中、mt_random($min,$max) を通じて、範囲内の値がランダムに取得され、配列 $res に格納されます。その後、2 つのキーと値の交換、つまり、配列キー 性質上、繰り返すことは不可能です。

2. 関数を使用せずに非反復乱数を実装する

このロジックのコードを読んだ後、array_filp 関数を知らなかったらどうするだろうかと深く考えずにはいられませんでした。
端的に言えば、乱数が重複しないように鍵の一意性を利用しています。では、この問題を単純化することはできるでしょうか?

コード例:

<?php   function get_randoms($min,$max,$num){  
   $count = 0;  
   $res = array();  
   while($count<$num){  
       $key = mt_random($min,$max);  
       $res[$key] = $key;  
       $count = count($res);  
   }  
   return $res;  
}  
$result = get_randoms(1,60,10);  
?>

これは、配列キーの一意性によってこの問題を完全に解決します。 array_flip はまったく使用されません。
概要:
1. PHP は多数の組み込み関数を提供しているため、実行効率が非常に高いです。問題が発生した場合は、できるだけ問題を解決するために使用してください。これは便利で速いです。

2. PHPは多くの組み込み関数を提供しており、実行効率も非常に高いですが、それでも実行には時間がかかります。
問題に遭遇したときは、やみくもに解決せず、まずは解決策の本質を見極め、上手に実行しましょう。

関連する推奨事項:

乱数を生成するphp rand()関数

繰り返しせずにphp乱数を生成する5つの方法

数字と文字からphp乱数を生成する方法

以上がPHPで非反復乱数を生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。