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 相关文章推荐
在线短消息收发的程序,不用数据库
Oct 09 PHP
杏林同学录(四)
Oct 09 PHP
PHP添加MySQL数据记录代码
Jun 07 PHP
Uncaught exception com_exception with message Failed to create COM object
Jan 11 PHP
php smarty truncate UTF8乱码问题解决办法
Jun 13 PHP
PHP之uniqid()函数用法
Nov 03 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 PHP
PHP给文字内容中的关键字进行套红处理
Apr 12 PHP
php强制下载文件函数
Aug 24 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
Apr 01 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
php中常用编辑器推荐
2007/01/02 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php中使用sftp教程
2015/03/30 PHP
ThinkPHP数据操作方法总结
2015/09/28 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
基于jquery的网站幻灯片切换效果焦点图代码
2013/09/15 Javascript
原生js二级联动效果
2017/06/20 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
Vue父子组建的简单通信之控制开关Switch的实现
2018/06/04 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
js实现图片推拉门效果代码实例
2019/05/18 Javascript
后台使用freeMarker和前端使用vue的方法及遇到的问题
2019/06/13 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
vue.js实现点击图标放大离开时缩小的代码
2021/01/27 Vue.js
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
深入浅析python with语句简介
2018/04/11 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
利用python读取YUV文件 转RGB 8bit/10bit通用
2019/12/09 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
HTML5在微信内置浏览器下右上角菜单的调整字体导致页面显示错乱的问题
2021/01/19 HTML / CSS
海外淘书首选:AbeBooks
2017/07/31 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
销售业务实习自我鉴定
2013/09/23 职场文书
采购内勤岗位职责
2013/12/10 职场文书
高中毕业生自我鉴定例文
2013/12/29 职场文书
乡下人家教学反思
2014/02/01 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年学校食堂工作总结
2015/04/22 职场文书
公务员学习中国梦心得体会
2016/01/05 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书