如何用php生成1-10之间的不重复随机数?
例1,使用shuffle函数生成随机数。
1
2
3
4
5
6
7
8
|
<?php $arr =range(1,10); shuffle( $arr ); foreach ( $arr as $values ) { echo $values . " " ; } ?> |
例2,使用array_unique函数生成随机数。
1
2
3
4
5
6
7
8
9
|
<?php $arr = array (); while ( count ( $arr )<10) { $arr []=rand(1,10); $arr = array_unique ( $arr ); } echo implode( " " , $arr ); ?> |
例3,使用array_flip函数生成随机数,可以去掉重复值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?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.zzvips.com foreach ( $return as $value ) { echo $value . " " ; } echo "<br/>" ; $arr = array_values ( $return ); // 获得数组的值 foreach ( $arr as $key ) echo $key . " " ; ?> |
php随机数生成函数示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
<?php function randpw( $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.zzvips.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 ++){ echo randpw(8, 'NUMBER' ); echo "<br>" ; } |