PHP生成不重复随机数的方法汇总


Posted in PHP onNovember 19, 2014

无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下。

方法一:

<?php 

$numbers = range (1,50); 

//shuffle 将数组顺序随即打乱 

shuffle ($numbers); 

//array_slice 取该数组中的某一段 

$num=6; 

$result = array_slice($numbers,0,$num); 

print_r($result); 

?>

方法二:

<?php 

$numbers = range (1,20); 

//播下随机数发生器种子,可有可无,测试后对结果没有影响

srand ((float)microtime()*1000000); 

shuffle ($numbers); 

//跳过list第一个值(保存的是索引)

while (list(, $number) = each ($numbers)) { 

echo "$number "; 

} 

?>

方法三:

<?php 

function NoRand($begin=0,$end=20,$limit=5){ 

$rand_array=range($begin,$end); 

shuffle($rand_array);//调用现成的数组随机排列函数 

return array_slice($rand_array,0,$limit);//截取前$limit个 

} 

print_r(NoRand()); 

?>

上述可以在1-20间随机产生5个不重复的值

方法四:

<?php 

$tmp=array(); 

while(count($tmp)<5){ 

$tmp[]=mt_rand(1,20); 

$tmp=array_unique($tmp); 

} 

print_r($tmp);

?>

方法五:

<?php 

$tmp = range(1,30);

print_r(array_rand($tmp,10));

?>

这个可能是比叫简单的了(ps:如果在range中指定了步长,就必须注意array_rand的第二个参数是否超出$tmp的长度)。

PHP提供非常丰富的数组函数,产生随机数大多可以从数组这个角度出发,当然如果你有更好的方法,也请告之,本文也算是抛砖引玉了。

PHP 相关文章推荐
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
调试一段PHP程序时遇到的三个问题
Jan 17 PHP
深入PHP nl2br()格式化输出的详解
Jun 05 PHP
ajax返回值中有回车换行、空格的解决方法分享
Oct 24 PHP
php实现对象克隆的方法
Jun 20 PHP
在WordPress中使用PHP脚本来判断访客来自什么国家
Dec 10 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
php blowfish加密解密算法
Jul 02 PHP
thinkphp3.2实现在线留言提交验证码功能
Jul 19 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP的PDO事务与自动提交
Jan 24 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 #PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 #PHP
PHP中使用数组指针函数操作数组示例
Nov 19 #PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 #PHP
PHP分页类集锦
Nov 18 #PHP
php去除数组中重复数据
Nov 18 #PHP
php中获取主机名、协议及IP地址的方法
Nov 18 #PHP
You might like
浅谈Windows下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
JavaScript XML实现两级级联下拉列表
2008/11/10 Javascript
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
2017/12/12 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
JS防抖和节流实例解析
2019/09/24 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
python中解析json格式文件的方法示例
2017/05/03 Python
Python编程实现蚁群算法详解
2017/11/13 Python
Python多继承顺序实例分析
2018/05/26 Python
解决Django一个表单对应多个按钮的问题
2019/07/18 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
Django分页功能的实现代码详解
2019/07/29 Python
Python3 JSON编码解码方法详解
2019/09/06 Python
使用Python完成15位18位身份证的互转功能
2019/11/06 Python
Matplotlib绘制雷达图和三维图的示例代码
2020/01/07 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
银行存款证明样本
2014/01/17 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
golang 实现对Map进行键值自定义排序
2021/04/28 Golang
Windows安装Anaconda3的方法及使用过程详解
2021/06/11 Python