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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
无数据库的详细域名查询程序PHP版(1)
Oct 09 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
一个显示效果非常不错的PHP错误、异常处理类
Mar 21 PHP
php递归法读取目录及文件的方法
Jan 30 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
PHP封装XML和JSON格式数据接口操作示例
Mar 06 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 PHP
浅析PHP中的 inet_pton 网络函数
Dec 16 PHP
php中get_object_vars()在数组的实例用法
Feb 22 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+DBM的同学录程序(4)
2006/10/09 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
DWZ+ThinkPHP开发时遇到的问题分析
2016/12/12 PHP
PHP查询分页的实现代码
2017/06/09 PHP
40个新鲜出炉的jQuery 插件和免费教程[上]
2012/07/24 Javascript
jQuery判断密码强度实现思路及代码
2013/04/24 Javascript
浏览器图片选择预览、旋转、批量上传的JS代码实现
2013/12/04 Javascript
jquery数组封装使用方法分享(jquery数组遍历)
2014/03/25 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
详解Vue + Vuex 如何使用 vm.$nextTick
2017/11/20 Javascript
关于Webpack dev server热加载失败的解决方法
2018/02/22 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
Python比较两个图片相似度的方法
2015/03/13 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
python实现的多任务版udp聊天器功能案例
2019/11/13 Python
Python OpenCV视频截取并保存实现代码
2019/11/30 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
留学自荐信的技巧
2013/10/17 职场文书
便利店投资的创业计划书
2014/01/12 职场文书
四年级数学教学反思
2014/02/02 职场文书
九年级政治教学反思
2014/02/06 职场文书
迟到检讨书300字
2014/02/14 职场文书
2016年情人节广告语
2016/01/28 职场文书
在Java中Collection的一些常用方法总结
2021/06/13 Java/Android