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 相关文章推荐
用libTemplate实现静态网页的生成
Oct 09 PHP
Wordpress php 分页代码
Oct 21 PHP
分享下php5类中三种数据类型的区别
Jan 26 PHP
php强制用户转向www域名的方法
Jun 19 PHP
学习php设计模式 php实现单例模式(singleton)
Dec 07 PHP
php版微信发红包接口用法示例
Sep 23 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
PHP常量define和const的区别详解
May 18 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 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
IP138 IP地址查询小偷实现代码
2010/02/15 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
2012/08/31 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
jquery mobile 移动web(5)
2015/12/20 Javascript
js+css实现回到顶部按钮(back to top)
2016/03/02 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
H5上传本地图片并预览功能
2017/05/08 Javascript
JS简单生成由字母数字组合随机字符串示例
2018/05/25 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
Vue2实时监听表单变化的示例讲解
2018/08/30 Javascript
Node.js 中判断一个文件是否存在
2020/08/24 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
Python中for循环和while循环的基本使用方法
2015/08/21 Python
Python简单定义与使用二叉树示例
2018/05/11 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
解决Pycharm 导入其他文件夹源码的2种方法
2020/02/12 Python
python对文件的操作方法汇总
2020/02/28 Python
Python打印不合法的文件名
2020/07/31 Python
Html5 滚动穿透的方法
2019/05/13 HTML / CSS
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
Final类有什么特点
2012/04/25 面试题
七年级数学教学反思
2014/01/22 职场文书
30年同学聚会感言
2014/01/30 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
创业计划实施的7大步骤
2014/02/05 职场文书
同意报考公务员证明
2015/06/17 职场文书
高中生物教学反思
2016/02/20 职场文书
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android