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 03 PHP
php Xdebug的安装与使用详解
Jun 20 PHP
php curl选项列表(超详细)
Jul 01 PHP
php发送post请求函数分享
Mar 06 PHP
PHP实现的连贯操作、链式操作实例
Jul 08 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 PHP
PHP程序员常见的40个陋习,你中了几个?
Nov 20 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
Mac系统完美安装PHP7详细教程
Jun 06 PHP
php+ajax实现商品对比功能示例
Apr 13 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
第4章 数据处理-php字符串的处理-郑阿奇(续)
2011/07/04 PHP
php while循环控制的简单实例
2016/05/30 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
2018/08/02 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
一些易混淆且不常用的属性,希望有用
2007/01/29 Javascript
再谈javascript 动态添加样式规则 W3C校检
2009/12/25 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
jqTransform美化表单
2015/10/10 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
js 去掉字符串前后空格实现代码集合
2017/03/25 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
JS实现对json对象排序并删除id相同项功能示例
2018/04/18 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
如何在JavaScript中谨慎使用代码注释
2019/06/21 Javascript
微信小程序之侧边栏滑动实现过程解析(附完整源码)
2019/08/23 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python 多线程抓取图片效率对比
2016/02/27 Python
python批量设置多个Excel文件页眉页脚的脚本
2018/03/14 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
解决Python在导入文件时的FileNotFoundError问题
2020/04/10 Python
python输入中文的实例方法
2020/09/14 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
移动端html5 meta标签的神奇功效
2016/01/06 HTML / CSS
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
服装设计专业自荐信
2014/06/17 职场文书
出生医学证明书
2014/09/15 职场文书
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js