分享下php生成随机数的三种方法,生成1-10之间的不重复随机数,php生成不重复随机数的例子,需要的朋友参考下
如何用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.jb51.net
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.jb51.net
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>"
;
}
|