方案1php
<?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; }
兩種方案均可以產生隨機數dom
方案1 在for循環的瞬間產生的隨機數重複率很低,測試100個之內無重複函數
方案2 在for循環的瞬間產生的隨機數重複率很高測試