php生成随机数的三种方法
如何用php生成1-10之间的不重复随机数?
例1,使用shuffle函数生成随机数。
<?php $arr=range(1,10); shuffle($arr); foreach($arras$values) { echo$values.""; } ?>
例2,使用array_unique函数生成随机数。
<?php $arr=array(); while(count($arr)<10) { $arr[]=rand(1,10); $arr=array_unique($arr); } echoimplode("",$arr); ?>
例3,使用array_flip函数生成随机数,可以去掉重复值。
<?php $arr=array(); $count1=0; $count=0; $return=array(); while($count<10) { $return[]=mt_rand(1,10); $return=array_flip(array_flip($return)); $count=count($return); }//www.nhooo.com foreach($returnas$value) { echo$value.""; } echo"<br/>"; $arr=array_values($return);//获得数组的值 foreach($arras$key) echo$key.""; ?>
php随机数生成函数示例
<?php functionrandpw($len=8,$format='ALL'){ $is_abc=$is_numer=0; $password=$tmp=''; switch($format){ case'ALL': $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; break; case'CHAR': $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; break; case'NUMBER': $chars='0123456789'; break; default: $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; break; }//www.nhooo.com mt_srand((double)microtime()*1000000*getmypid()); while(strlen($password)<$len){ $tmp=substr($chars,(mt_rand()%strlen($chars)),1); if(($is_numer<>1&&is_numeric($tmp)&&$tmp>0)||$format=='CHAR'){ $is_numer=1; } if(($is_abc<>1&&preg_match('/[a-zA-Z]/',$tmp))||$format=='NUMBER'){ $is_abc=1; } $password.=$tmp; } if($is_numer<>1||$is_abc<>1||empty($password)){ $password=randpw($len,$format); } return$password; } for($i=0;$i<10;$i++){ echorandpw(8,'NUMBER'); echo"<br>"; }
PS:最后再为大家提供两款相关在线工具供大家参考使用:
在线随机数字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
高强度随机密码生成器:
http://tools.jb51.net/password/CreateStrongPassword