phpを使用して1から10までの非繰り返しの乱数を生成するにはどうすればよいですか?
例 1、シャッフル関数を使用して乱数を生成します。
1 |
2 | $arr=範囲(1,10); |
3 | シャッフル($arr); |
4 | foreach($arr を $values として) |
5 | { |
6 | $values をエコーします。" "; |
7 | } |
8 | ?> |
例 2、array_unique 関数を使用して乱数を生成します。
1 |
2 | $arr=配列(); |
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 |
02 | $arr=配列(); |
03 | $count1=0; |
04 | $count = 0; |
05 | $return = array(); |
06 | その間 ($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 | $value をエコーします。" "; |
15 | } |
16 | エコー " "; |
17 | $arr=array_values($return);//配列の値を取得します |
18 | foreach($arr を $key として) |
19 | $key をエコーします。" "; |
20 | ?> |
php乱数生成関数の例
01 |
02 | 関数 randpw($len=8,$format='ALL'){ |
03 | $is_abc = $is_numer = 0; |
04 | $パスワード = $tmp =''; |
スイッチ($format){ |
ケース「すべて」: |
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; |
休憩; |
ケース「CHAR」: |
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; |
休憩; |
ケース「番号」: |
$chars='0123456789'; |
休憩; |
デフォルト: |
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; |
休憩; |
} // www.jbxue.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'){ |
26 | $is_abc = 1; |
27 | } |
28 | $パスワード.= $tmp; |
29 | } |
30 | if($is_numer <> 1 || $is_abc <> 1 || empty($password) ){ |
31 | $パスワード = randpw($len,$format); |
32 | } |
33 | $password を返す; |
34 | } |
35 | for($i = 0 ; $i |
36 | echo randpw(8,'NUMBER'); |
37 | エコー " "; |
38 | } |