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

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

藏色散人
藏色散人オリジナル
2020-11-25 10:01:133033ブラウズ

php で非反復乱数を生成する方法: 最初に PHP サンプル ファイルを作成し、次に「mt_random($min,$max)」メソッドを使用して範囲内の値をランダムに生成し、最後に「」を使用します。 「キーと値」の交換、つまり配列キーの一意性により、重複することなく実現できます。

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

このチュートリアルの動作環境: Windows 7 システム、PHP バージョン 5.6。この方法は、すべてのブランドのコンピューターに適しています。

推奨: 「PHP ビデオ チュートリアル

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

PHP ビルド- in 関数は繰り返し乱数ではありません

要件: 配列を生成するには、この配列には 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 サイトの他の関連記事を参照してください。

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