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绘制饼状图的实现代码
Jun 07 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
php生成图形(Libchart)实例
Nov 06 PHP
PHP中执行cmd命令的方法
Oct 11 PHP
PHP将进程作为守护进程的方法
Mar 19 PHP
PHP使用逆波兰式计算工资的方法
Jul 29 PHP
php动态读取数据清除最右边距的方法
Apr 12 PHP
PHP 网站修改默认访问文件的nginx配置
May 27 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
Jul 19 PHP
PHP substr()函数参数解释及用法讲解
Nov 23 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 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
海河写的 Discuz论坛帖子调用js的php代码
2007/08/23 PHP
PHP实时显示输出
2008/10/02 PHP
PHP 实现多服务器共享 SESSION 数据
2009/08/15 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
js 获取radio按钮值的实例
2013/08/17 Javascript
JavaScript实现关键字高亮功能
2014/11/12 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
2016/02/02 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
NodeJs搭建本地服务器之使用手机访问的实例讲解
2018/05/12 NodeJs
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
vue router动态路由设置参数可选问题
2019/08/21 Javascript
layui弹出框Tab选项卡的示例代码
2019/09/04 Javascript
Vue性能优化的方法
2020/07/30 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
[32:56]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.11
2020/12/16 DOTA
[01:05:07]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第一场2月1日
2021/03/11 DOTA
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
python对象及面向对象技术详解
2016/07/19 Python
浅谈python中字典append 到list 后值的改变问题
2018/05/04 Python
pyCharm 实现关闭代码检查
2020/06/09 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
酒店中秋节活动方案
2014/01/31 职场文书
学生打架检讨书
2014/10/20 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
2016年暑期社会实践活动总结报告
2016/04/06 职场文书
MySQL系列之十一 日志记录
2021/07/02 MySQL
Python+Tkinter打造签名设计工具
2022/04/01 Python