PHP产生不重复随机数的5个方法总结


Posted in PHP onNovember 12, 2014

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

方法一:

<?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语法(1)
Oct 09 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
Dec 18 PHP
Windows7下PHP开发环境安装配置图文方法
May 20 PHP
常见的PHP五种设计模式小结
Mar 23 PHP
深入apache host的配置详解
Jun 09 PHP
浅析关于PHP位运算的简单权限设计
Jun 30 PHP
将酷狗krc歌词解析并转换为lrc歌词php源码
Jun 20 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 PHP
php实现的简单日志写入函数
Mar 31 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
php一行代码获取文件后缀名实例分析
Nov 12 #PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 #PHP
php实现的css文件背景图片下载器代码
Nov 11 #PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 #PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 #PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 #PHP
PHP基于imap获取邮件实例
Nov 11 #PHP
You might like
SSI指令
2006/11/25 PHP
关于时间计算的结总
2006/12/06 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
2014/01/09 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
php实现数据库的增删改查
2017/02/26 PHP
Laravel 登录后清空COOKIE的操作方法
2019/10/14 PHP
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
2016/03/23 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
Angular.js中定时器循环的3种方法总结
2017/04/27 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
JavaScript Date对象应用实例分享
2017/10/30 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
微信小程序实现用table显示数据库反馈的多条数据功能示例
2019/05/07 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
layer弹窗在键盘按回车将反复刷新的实现方法
2019/09/25 Javascript
python 的列表遍历删除实现代码
2020/04/12 Python
Python实现包含min函数的栈
2016/04/29 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
python对excel文档去重及求和的实例
2018/04/18 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
Python多线程的退出控制实现
2020/08/10 Python
python 实现波浪滤镜特效
2020/12/02 Python
Python LMDB库的使用示例
2021/02/14 Python
卫生安全检查制度
2014/02/04 职场文书
党政领导班子群众路线对照检查材料思想汇报
2014/09/27 职场文书
一份教室追逐打闹的检讨书
2014/09/27 职场文书
2015年元旦促销方案书
2014/12/09 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
2015年清明节网上祭英烈活动总结
2015/03/26 职场文书
大学生自我鉴定怎么写
2019/05/07 职场文书
详解Vue的options
2021/05/15 Vue.js
python实现对doc、txt、xls等文档的读写操作
2022/04/02 Python