PHP中隨機產生一組不重復的數字實現程序
來源:程序員人生 發布時間:2014-01-19 19:56:24 閱讀次數:3579次
隨機產生數字往往應用在隨機的密碼或隨機驗證碼之類上面,PHP中有rand()干擾函數和MD5來實現,下面我們來看一下結合PHP函數來產生一組不重復的數字數組是如何用程序來實現的,直接上代碼:
- <?php
-
-
-
-
- $a = microtime();
- function createRandID($m){
-
- $arr = range(1,$m);
-
- shuffle ($arr);
-
- for($i=0;$i<=10;$i++){
-
- $n[] = $arr[$i];
- }
-
- return implode($n,',');
- }
-
- echo createRandID(700000);
- echo '<br />';
- echo $a - microtime();
- ?>
執行結果:
560875,593409,325987,658308,248054,205426,375413,676243,485853,575393,115975
0.672761
由以上結果可以看到,時間花了0.6,我們把隨機數范圍從700000調到900000再看看執行結果:Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 7200000 bytes) in /data0/htdocs/www/a.php on line 10
數組太大程序跑不下了,代碼如下:
- <?php
-
-
-
-
- $a = microtime();
- function createRandID($m){
-
- $arr = array();
-
- while(count($arr)<=10){
-
- $a = rand(1,$m);
-
-
- if(!in_array($a,$arr)){
-
- $arr[] = $a;
- }
- }
-
- return implode($arr,',');
- }
- echo createRandID(700000);
- echo '<br />';
- echo $a - microtime();
- ?>
執行結果:
308326,155128,280424,493174,214855,219990,482837,66329,512934,232527,3869750.00015699999999996
由以上執行結果可以看到,時間根本可以忽略不計,我們把隨機數范圍從700000調到999999再看看執行結果
392281,822956,401282,176255,143076,501802,393338,546922,21836,601991,3620060.00013600000000002
執行結果跟最大取數值設置都沒有絲毫關系,還是跑的挺快!
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈