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带密码功能并下载远程文件保存本地指定目录 修改加强版
May 16 PHP
PHP 工厂模式使用方法
May 18 PHP
php数字转汉字代码(算法)
Oct 08 PHP
PHP Global定义全局变量使用说明
Aug 15 PHP
php创建桌面快捷方式实现方法
Dec 31 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
非常实用的php验证码类
May 15 PHP
PHP实现腾讯与百度坐标转换
Aug 05 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
php正则表达式使用方法整理集合
Jan 31 PHP
PHP7 参数处理机制修改
Mar 09 PHP
详解Go与PHP的语法对比
May 29 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介绍篇
2010/10/26 PHP
Nigma vs Liquid BO3 第二场2.14
2021/03/10 DOTA
javascript 节点排序 2
2011/01/31 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
多个datatable共存造成多个表格的checkbox都被选中
2013/07/11 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
js中unicode转码方法详解
2015/10/09 Javascript
Bootstrap每天必学之折叠(Collapse)插件
2016/04/25 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
ztree加载完成后显示勾选节点的实现代码
2018/10/22 Javascript
axios使用拦截器统一处理所有的http请求的方法
2018/11/02 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
vue elementui 实现搜索栏公共组件封装的实例代码
2020/01/20 Javascript
Vue获取页面元素的相对位置的方法示例
2020/02/05 Javascript
vue在线动态切换主题色方案
2020/03/26 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
Python基础教程之异常详解
2019/01/10 Python
Python实现数据结构线性链表(单链表)算法示例
2019/05/04 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
联想阿根廷官方网站:Lenovo Argentina
2019/10/14 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
数学专业推荐信范文
2013/11/21 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
股权转让协议书范本
2014/04/12 职场文书
保护动物倡议书
2014/04/15 职场文书
销售顾问工作计划书
2014/09/15 职场文书
共青团优秀团员申请书(范文)
2019/08/15 职场文书
golang slice元素去重操作
2021/04/30 Golang
Python Parser的用法
2021/05/12 Python