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 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
从MySQL数据库表中取出随机数据的代码
Sep 05 PHP
PHP 数字左侧自动补0
Mar 31 PHP
php 移除数组重复元素的一点说明
Nov 27 PHP
PHP中操作ini配置文件的方法
Apr 25 PHP
PHP基础学习之流程控制的实现分析
Apr 28 PHP
PHP实现把数字ID转字母ID
Aug 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(九)
Jun 24 PHP
php json_encode()函数返回json数据实例代码
Oct 10 PHP
php从memcache读取数据再批量写入mysql的方法
Dec 29 PHP
Thinkphp 3.2框架使用Redis的方法详解
Oct 24 PHP
PHP实现递归的三种方法
Jul 04 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
xml在joomla表单中的应用详解分享
2012/07/19 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
php保存信息到当前Session的方法
2015/03/16 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
Mootools 1.2教程 输入过滤第二部分(字符串)
2009/09/15 Javascript
下载网站打开页面后间隔多少时间才显示下载链接地址的代码
2010/04/25 Javascript
基于jQuery试卷自动排版系统
2010/07/18 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
JS通过相同的name进行表格求和代码
2013/08/18 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
JavaScript 七大技巧(一)
2015/12/13 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
javascript中apply/call和bind的使用
2017/02/15 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
了解重排与重绘
2019/05/29 Javascript
python 反向输出字符串的方法
2018/07/16 Python
Django 实现图片上传和显示过程详解
2019/07/18 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
HTML5 Web Workers之网站也能多线程的实现
2013/04/24 HTML / CSS
html5 实现客户端验证上传文件的大小(简单实例)
2016/05/15 HTML / CSS
HTML5高仿微信聊天、微信聊天表情|对话框|编辑器功能
2018/04/23 HTML / CSS
"引用"与多态的关系
2013/02/01 面试题
大学生求职简历的自我评价
2013/10/14 职场文书
运动会入场词100字
2014/02/06 职场文书
小学班主任评语大全
2014/04/23 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
2014年督导工作总结
2014/11/19 职场文书
小学教师党员承诺书
2015/04/27 职场文书
单身证明范本
2015/06/15 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
SpringBoot 集成短信和邮件 以阿里云短信服务为例
2022/04/22 Java/Android
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL