如何用php生成1-10之間的不重復隨機數?
例1,使用shuffle函數生成隨機數。
1 <?php 2 $arr=range(1,10); 3 shuffle($arr); 4 foreach($arr as $values) 5 { 6 echo $values." "; 7 } 8 ?>例2,使用array_unique函數生成隨機數。
1 <?php 2 $arr=array(); 3 while(count($arr)<10) 4 { 5 $arr[]=rand(1,10); 6 $arr=array_unique($arr); 7 } 8 echo implode(" ",$arr); 9 ?>例3,使用array_flip函數生成隨機數,可以去掉重復值。
01 <?php 02 $arr=array(); 03 $count1=0; 04 $count = 0; 05 $return = array(); 06 while ($count < 10) 07 { 08 $return[] = mt_rand(1, 10); 09 $return = array_flip(array_flip($return)); 10 $count = count($return); 11 } //www.jbxue.com 12 foreach($return as $value) 13 { 14 echo $value." "; 15 } 16 echo "<br/>"; 17 $arr=array_values($return);// 獲得數組的值 18 foreach($arr as $key) 19 echo $key." "; 20 ?>php隨機數生成函數示例
01 <?php 02 function randpw($len=8,$format='ALL'){ 03 $is_abc = $is_numer = 0; 04 $password = $tmp =''; 05 switch($format){ 06 case 'ALL': 07 $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 08 break; 09 case 'CHAR': 10 $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 11 break; 12 case 'NUMBER': 13 $chars='0123456789'; 14 break; 15 default : 16 $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; 17 break; 18 } // www.jbxue.com 19 mt_srand((double)microtime()*1000000*getmypid()); 20 while(strlen($password)<$len){ 21 $tmp =substr($chars,(mt_rand()%strlen($chars)),1); 22 if(($is_numer <> 1 && is_numeric($tmp) && $tmp > 0 )|| $format == 'CHAR'){ 23 $is_numer = 1; 24 } 25 if(($is_abc <> 1 && preg_match('/[a-zA-Z]/',$tmp)) || $format == 'NUMBER'){ 26 $is_abc = 1; 27 } 28 $password.= $tmp; 29 } 30 if($is_numer <> 1 || $is_abc <> 1 || empty($password) ){ 31 $password = randpw($len,$format); 32 } 33 return $password; 34 } 35 for($i = 0 ; $i < 10; $i++){ 36 echo randpw(8,'NUMBER'); 37 echo "<br>"; 38 }