博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php生成N个不重复的随机数实例
阅读量:6258 次
发布时间:2019-06-22

本文共 876 字,大约阅读时间需要 2 分钟。

思路:

将随机数存入数组,再在数组中去除重复的值,即可生成一定数量的不重复随机数。

/** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围* $num: 指定生成数量*/function unique_rand($min, $max, $num) {    $count = 0;    $return = array();    while ($count < $num) {        $return[] = mt_rand($min, $max);        $return = array_flip(array_flip($return));        $count = count($return);    }    shuffle($return);//将数组中的值进行随机排列    return $return;}$arr = unique_rand(1, 25, 10);sort($arr);  //升序,以便观察$result = '';for($i=0; $i < count($arr);$i++){ $result .= $arr[$i].',';}$result = substr($result, 0, -1);echo $result;

补充说明

生成随机数时用了 mt_rand() 函数。这个函数生成随机数的平均速度要比 rand() 快四倍。
去除数组中的重复值时用了“翻翻法”,就是用 array_flip() 把数组的 key 和 value 交换两次。这种做法比用 array_unique() 快得多。
返回数组前,先使用 shuffle() 为数组赋予新的键名,保证键名是 0-n 连续的数字。如果不进行此步骤,可能在删除重复值时造成键名不连续,给遍历带来麻烦。

转载于:https://www.cnblogs.com/xs-yqz/p/7308413.html

你可能感兴趣的文章
SCCM TP4安装客户端Agent
查看>>
配置PIX515E DMZ的基本方法与故障排除
查看>>
HA Cluster—ansible批量操作
查看>>
SpringMVC那点事
查看>>
大话nbu三(配置media server存储)
查看>>
【嵌入式】内存管理,虚拟存储
查看>>
Linux多线程实践(2) --线程基本API
查看>>
从BaseActivity与BaseFragment的封装谈起
查看>>
Java Web开发相关连接
查看>>
虚拟机内存中数据细节
查看>>
ZigBee Silicon Labs/Ember EFR32MG/EM357 1.1 总体框架
查看>>
信号结构类的时间开销对比
查看>>
在Ubuntu上部署开源博客系统Blog_mini
查看>>
内部类知识
查看>>
使用 kubeadm 创建一个 kubernetes 集群
查看>>
MYSQL主从同步故障
查看>>
nginx 代理http配置实例
查看>>
阿里巴巴12位科学家发布2018年科技趋势预测
查看>>
开放的即时通信协议Jabber
查看>>
Django 的生命周期
查看>>