下面来介绍两个PHP中随机产生一组不重复的数字实现程序代码,有需要学习的朋友可参考参考。
代码如下 |
复制代码 |
/**
* PHP获取一组随机数字不重复
*/
$a = microtime();
function createRandID($m){
// 产生一个从1到$m的数组
$arr = range(1,$m);
// 打乱数组
shuffle ($arr);
// 取前十个
for($i=0;$i
// 赋值给新数组$n
$n[] = $arr[$i];
}
// 返回这组数字
return implode($n,',');
}
echo createRandID(700000);
echo ' ';
echo $a - microtime();
?>
|
执行结果:
560875,593409,325987,658308,248054,205426,375413,676243,485853,575393,115975
0.672761
由以上结果可以看到,时间花了0.6。我们把随机数范围从700000调到900000再看看执行结果
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 7200000 bytes) in /data0/htdocs/www/a.php on line 10
数组太大程序跑不下了!!
代码如下 |
复制代码 |
/**
* PHP获取一组随机数字不重复
* 琼台博客
*/
$a = microtime();
function createRandID($m){
// 注意,要先声明一个空数组,否则while里的in_array会报错
$arr = array();
// 使用while循环,只要不够10个就永远循环
while(count($arr)
// 产生一个随机数
$a = rand(1,$m);
// 判断:如果产生的随机数不再数组里就赋值到数组里
// 主要避免产生重复的数字
if(!in_array($a,$arr)){
// 把随机数赋值到数组里
$arr[] = $a;
}
}
// 返回产生的随机数字
return implode($arr,',');
}
echo createRandID(700000);
echo ' ';
echo $a - microtime();
?>
|
执行结果:
308326,155128,280424,493174,214855,219990,482837,66329,512934,232527,386975
0.00015699999999996
由以上执行结果可以看到,时间根本可以忽略不计,我们把随机数范围从700000调到999999再看看执行结果
392281,822956,401282,176255,143076,501802,393338,546922,21836,601991,362006
0.00013600000000002
执行结果跟最大取数值设置都没有丝毫关系,还是跑的挺快!
http://www.bkjia.com/PHPjc/631573.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631573.htmlTechArticle下面来介绍两个PHP中随机产生一组不重复的数字实现程序代码,有需要学习的朋友可参考参考。 代码如下 复制代码 ?php /** * PHP获取一组随机...