php生成随机不重复的数字_PHP中随机产生一组不重复的数字实现程序

下面来介绍两个PHP中随机产生一组不重复的数字实现程序代码,有需要学习的朋友可参考参考。

 代码如下复制代码

/**

* PHP获取一组随机数字不重复

*/

$a = microtime();

function createRandID($m){

// 产生一个从1到$m的数组

$arr = range(1,$m);

// 打乱数组

shuffle ($arr);

// 取前十个

for($i=0;$i<=10;$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)<=10){

// 产生一个随机数

$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

执行结果跟最大取数值设置都没有丝毫关系,还是跑的挺快!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值