以下は、PHP で非反復数値のセットをランダムに生成するための 2 つのプログラム コードの紹介です。学習が必要な方は参照してください。
コードは次のとおりです |
コードをコピー |
/**
* 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 - マイクロタイム();
?>
実行結果:
| 560875,593409,325987,658308,248054,205426,375413,676243,485853,575393,115975
0.672761
上記の結果からわかるように、かかった時間は 0.6 です。乱数を700000から900000の範囲で調整して実行結果を見てみましょう
致命的なエラー: /data0/htdocs/www/a.php の 10 行目で、許容サイズ 134217728 バイトのメモリが使い果たされました (7200000 バイトを割り当てようとしました)
配列が大きすぎるため、プログラムを実行できません。 !
コードは次のとおりです
コードをコピー
|
/** |
* PHP は反復せずに一連の乱数を取得します
*瓊台ブログ
* 瓊台ブログ
*/
$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 |
0.00013600000000002
実行結果は最大値の設定とは関係なく、それでも非常に高速に実行されます。
http://www.bkjia.com/PHPjc/631573.html
www.bkjia.com
truehttp://www.bkjia.com/PHPjc/631573.html技術記事
以下は、PHP で非反復数値のセットをランダムに生成するための 2 つのプログラム コードの紹介です。学習が必要な方は参照してください。 コードは次のとおりです。 コードをコピーします ?php /** * PHP はランダムなセットを取得します...