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 相关文章推荐
使用无限生命期Session的方法
Oct 09 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
PHP 输出缓存详解
Jun 20 PHP
关于js与php互相传值的介绍
Jun 25 PHP
浅析Apache中RewriteCond规则参数的详细介绍
Jun 30 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
PHP异常Parse error: syntax error, unexpected T_VAR错误解决方法
May 06 PHP
php+MySQL判断update语句是否执行成功的方法
Aug 28 PHP
Zend Framework教程之Loader以及PluginLoader用法详解
Mar 09 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
thinkPHP框架实现的短信接口验证码功能示例
Jun 20 PHP
作为PHP程序员你要知道的另外一种日志
Jul 30 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
2017/07/07 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
PHP vsprintf()函数格式化字符串操作原理解析
2020/07/14 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
ie下jquery.getJSON的缓存问题的处理方法
2013/03/29 Javascript
jquery获取焦点和失去焦点事件代码
2013/04/21 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
通过location.replace禁止浏览器后退防止重复提交
2014/09/04 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
全面了解函数声明与函数表达式、变量提升
2016/08/09 Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
2016/12/05 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
微信小程序之多文件下载的简单封装示例
2018/01/29 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
javascript实现弹出层效果
2019/12/10 Javascript
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
[54:06]OG vs TNC 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Opencv+Python 色彩通道拆分及合并的示例
2018/12/08 Python
Python数据正态性检验实现过程
2020/04/18 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
Python使用Matlab命令过程解析
2020/06/04 Python
Python中有几个关键字
2020/06/04 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
Skyscanner新西兰:全球领先的旅游搜索网站
2019/08/26 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
《我的信念》教学反思
2014/02/15 职场文书
经典婚礼主持词
2014/03/13 职场文书
高中课程设置方案
2014/05/28 职场文书
家长会标语
2014/06/24 职场文书
2016春节慰问信范文
2015/03/25 职场文书
shell进度条追踪指令执行时间的场景分析
2022/06/16 Servers