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

phpで非反復乱数を生成する方法の分析

WBOY
WBOYオリジナル
2016-07-25 08:52:52962ブラウズ
  1. function get_randoms($min,$max,$num){
  2. $count = 0;
  3. $res = array(){
  4. $res; [] = mt_random($min,$max);
  5. $res = array_flip(array_flip($res));
  6. $res を返す }
  7. $result; (1,60,10);
  8. コードをコピー
  9. ここでは $count を使用して結果の配列の数を取得し、その間に結果の配列の数を目標の数よりも少なくします。ループ。このようにして、$count が対象の数値の配列として得られます。 (bbs.it-home.org スクリプト スクール) この期間中、各サイクルでは、mt_random($min,$max) を通じて範囲内の値がランダムに取得され、配列 $res に格納されます。その後、2 つのキーと値の交換、つまり、配列キー、重複がないことを確認してください。
このロジックのコードを読んだ後、array_filp 関数を知らなかったらどうするか深く考えずにはいられませんでした。 端的に言えば、鍵の一意性を利用して乱数が重複しないようにしているのです。では、この問題を単純化することはできるでしょうか? コード:

function get_randoms($min,$max,$num){

$count = 0;
$res = array(); while($count<$num){
$ key = mt_random($min,$max);
    $res[$key] = $key;
  1. $res を返す
  2. }
  3. $result(1,60) ,10);
  4. ?>
  5. コードをコピー
  6. これは、配列キーの一意性によってこの問題を完全に解決します。 Array_flip はまったく使用されません。
  7. 概要: 1. PHP には多数の組み込み関数が用意されているため、実行効率が非常に高いです。 (bbs.it-home.org プログラマーのホーム) 問題が発生した場合は、できるだけ問題を解決するために使用してください。これは便利で速いです。
  8. 2. PHPは多くの組み込み関数を提供しており、実行効率も非常に高いですが、それでも実行には時間がかかります。 問題に遭遇したときは、やみくもに解決するのではなく、まずは解決策の本質を見極め、上手に実行していきましょう。

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