PHP中随机产生一组不重复的数字实现程序

随机产生数字往往应用在随机的密码或随机验证码之类上面,PHP中有rand()干扰函数和MD5来实现,下面我们来看一下结合PHP函数来产生一组不重复的数字数组是如何用程序来实现的,直接上代码:

  1. <?php  
  2.  
  3. /**  
  4.  * PHP获取一组随机数字不重复  
  5.  */ 
  6. $a = microtime();  
  7. function createRandID($m){  
  8.     // 产生一个从1到$m的数组  
  9.     $arr = range(1,$m);  
  10.     // 打乱数组  
  11.     shuffle ($arr);   
  12.     // 取前十个  
  13.     for($i=0;$i<=10;$i++){  
  14.         // 赋值给新数组$n  
  15.         $n[] = $arr[$i];      
  16.     }  
  17.     // 返回这组数字  
  18.     return implode($n,',');  
  19. }  
  20.    
  21. echo createRandID(700000);  
  22. echo '<br />';  
  23. echo $a – microtime();  
  24. ?> 

执行结果:

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

数组太大程序跑不下了,代码如下:

  1. <?php  
  2. /**  
  3.  * PHP获取一组随机数字不重复  
  4.  * PHP博客  
  5.  */ 
  6. $a = microtime();  
  7. function createRandID($m){  
  8.     // 注意,要先声明一个空数组,否则while里的in_array会报错  
  9.     $arr = array();  
  10.     // 使用while循环,只要不够10个就永远循环  
  11.     while(count($arr)<=10){  
  12.         // 产生一个随机数  
  13.         $a = rand(1,$m);  
  14.         // 判断:如果产生的随机数不再数组里就赋值到数组里  
  15.         // 主要避免产生重复的数字  
  16.         if(!in_array($a,$arr)){  
  17.             // 把随机数赋值到数组里  
  18.             $arr[] = $a;      
  19.         }  
  20.     }  
  21.     // 返回产生的随机数字  
  22.     return implode($arr,',');  
  23. }  
  24. echo createRandID(700000);  
  25. echo '<br />';  
  26. echo $a – microtime();  
  27. ?> 

执行结果:

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

执行结果跟最大取数值设置都没有丝毫关系,还是跑的挺快!

波比源码 – 精品源码模版分享 | www.bobi11.com
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 本站源码并不保证全部能正常使用,仅供有技术基础的人学习研究,请谨慎下载
8. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

波比源码 » PHP中随机产生一组不重复的数字实现程序

发表评论

Hi, 如果你对这款模板有疑问,可以跟我联系哦!

联系站长
赞助VIP 享更多特权,建议使用 QQ 登录
喜欢我嘛?喜欢就按“ctrl+D”收藏我吧!♡