php メソッドで非繰り返しの乱数を取得します。まず「mt_random($min,$max)」メソッドを通じて間隔内の値をランダムに取得し、次に 2 つの「キーと値」を通じて非繰り返しを実現します。単なる乱数を交換します。
推奨: 「PHP ビデオ チュートリアル 」
PHP で非反復乱数を生成する方法
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 つのキーと値の交換、つまり、配列キーの一意性により、重複がないことが保証されます。
このロジックのコードを読んだ後、私は深く考えずにはいられませんでした。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で非反復乱数を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。