非反復乱数の PHP 表現を生成します。
この配列には 10 個の要素があり、そのすべてが 1 ~ 60 の整数であり、繰り返しのない乱数です。
もちろん、この質問は難しいものではありません。以下はフォーラムの返信からの回答です。
コード:
ここでは $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){ $res[] = mt_random($min,$max); $res = array_flip(array_flip($res)); $count = count($res); } return $res; } $result = get_randoms(1,60,10); ?>
ログイン後にコピー
コード:
このようにして、配列キーの一意性によってこの問題を完全に解決しました。 Array_flip はまったく使用されません。
以上を通して、私は 2 つの点を指摘します。
<?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); ?>
ログイン後にコピー
1: PHP には多数の組み込み関数が用意されているため、実行効率が非常に高くなります。 問題に遭遇したとき、私たちは問題を解決するために全力を尽くします。これは便利で速いです。 そのため、私たちは日々の業務の中で仕事や勉強をし、PHPの機能をできるだけ多く蓄積し、深く理解しています。
2: PHP には多数の組み込み関数が用意されており、実行効率が非常に高いですが、効率は高いものの、実行には時間がかかることを指摘しておきます。問題に遭遇したときは、やみくもに解決するのではなく、まず解決策の本質を見極め、それをうまく実行していきます。