方案1
<?php $num = range(0,10);//利用range()函数产生一个0到10的数组 shuffle($num);//利用shuffle()函数将产生的$num数组随机打乱顺序 for ($i=0; $i < 5; $i++) {//选取数组前5个,即随机 echo $num[$i]." "; } ?>
方案2
function randomkeys1($len=8,$format='NUMBER'){ $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='0123456789'; break; } 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 = randomkeys($len,$format); } return $password; }
两种方案都可以产生随机数
方案1 在for循环的瞬间产生的随机数重复率很低,测试100个以内无重复
方案2 在for循环的瞬间产生的随机数重复率很高