ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルで非繰り返し数値のセットをランダムに生成するプログラム

PHP_PHP チュートリアルで非繰り返し数値のセットをランダムに生成するプログラム

WBOY
WBOYオリジナル
2016-07-13 16:56:461062ブラウズ

以下は、PHP で非反復数値のセットをランダムに生成するための 2 つのプログラム コードの紹介です。学習が必要な方は参照してください。

560875,593409,325987,658308,248054,205426,375413,676243,485853,575393,115975 0.672761
コードは次のとおりです コードをコピー

/**
* PHP は反復せずに一連の乱数を取得します
​*/
$a = マイクロタイム(); 関数 createRandID($m){
// 1 から $m までの配列を生成します
$arr = 範囲(1,$m); //配列をシャッフルします
シャッフル ($arr)
// 最初の 10 個を取得します
for($i=0;$i<=10;$i++){
// 新しい配列 $n に代入します
$n[] = $arr[$i]; }
// この数値セットを返します
爆破($n,',')を返します
}

エコー作成RandID(700000)
エコー '
'; エコー $a - マイクロタイム(); ?>




実行結果:

上記の結果からわかるように、かかった時間は 0.6 です。乱数を700000から900000の範囲で調整して実行結果を見てみましょう

致命的なエラー: /data0/htdocs/www/a.php の 10 行目で、許容サイズ 134217728 バイトのメモリが使い果たされました (7200000 バイトを割り当てようとしました)

配列が大きすぎるため、プログラムを実行できません。 !

コードは次のとおりです

コードをコピー * PHP は反復せずに一連の乱数を取得します *瓊台ブログ 0.00013600000000002
/**
​* 瓊台ブログ

*/
$a = マイクロタイム(); 関数 createRandID($m){
// 注意してください、最初に空の配列を宣言する必要があります。そうしないと、while の in_array がエラーを報告します
$arr = 配列(); // while ループを使用して、10 未満である限り永久にループします
While(count($arr)<=10){
// 乱数を生成します
$a = rand(1,$m); // 判定: 生成した乱数が配列に存在しない場合は、配列に代入します
// 主に番号の重複を避けるため
if(!in_array($a,$arr)){
//配列に乱数を代入します
$arr[] = $a; }
}
// 生成された乱数を返します
implode($arr,',') を返します
}
エコー作成RandID(700000)
エコー '
'; エコー $a - マイクロタイム(); ?>




実行結果:

308326,155128,280424,493174,214855,219990,482837,66329,512934,232527,386975
0.00015699999999996

上記の実行結果から分かるように、時間を全く無視できるように乱数の範囲を700000から999999に調整して実行結果を見てみましょう。 392281,822956,401282,176255,143076,501802,393338,546922,21836,601991,362006

実行結果は最大値の設定とは関係なく、それでも非常に高速に実行されます。


http://www.bkjia.com/PHPjc/631573.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/631573.html技術記事

以下は、PHP で非反復数値のセットをランダムに生成するための 2 つのプログラム コードの紹介です。学習が必要な方は参照してください。 コードは次のとおりです。 コードをコピーします ?php /** * PHP はランダムなセットを取得します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。