萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php生成隨機數的三種方法

php生成隨機數的三種方法

 如何用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 }
copyright © 萬盛學電腦網 all rights reserved