PHP产生不重复随机数的5个方法总结


Posted in PHP onNovember 12, 2014

无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地。在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下(ps:方法1、4、5是我常用的,其余来自网络整理)

方法一:

<?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 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
PHP入门速成教程
Mar 19 PHP
php+mysql分页代码详解
Mar 27 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
apache mysql php 源码编译使用方法
May 03 PHP
递归删除一个节点以及该节点下的所有节点示例
Mar 19 PHP
PHP include任意文件或URL介绍
Apr 29 PHP
php与flash as3 socket通信传送文件实现代码
Aug 16 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
Sep 09 PHP
php写app接口并返回json数据的实例(分享)
May 20 PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 PHP
PHP匿名函数(闭包函数)详解
Mar 22 PHP
php一行代码获取文件后缀名实例分析
Nov 12 #PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 #PHP
php实现的css文件背景图片下载器代码
Nov 11 #PHP
PHP获取数组中重复最多的元素的实现方法
Nov 11 #PHP
利用PHP函数计算中英文字符串长度的方法
Nov 11 #PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
Nov 11 #PHP
PHP基于imap获取邮件实例
Nov 11 #PHP
You might like
由php if 想到的些问题
2008/03/22 PHP
php中使用$_REQUEST需要注意的一个问题
2013/05/02 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
node.js中的fs.closeSync方法使用说明
2014/12/17 Javascript
JS实现IE状态栏文字缩放效果代码
2015/10/24 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
JS验证字符串功能
2017/02/22 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
vue+webpack实现异步加载三种用法示例详解
2018/04/24 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
vue 更改连接后台的api示例
2019/11/11 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
vue实现评价星星功能
2020/06/30 Javascript
JavaScript实现跟随鼠标移动的盒子
2021/01/28 Javascript
用python处理图片之打开\显示\保存图像的方法
2018/05/04 Python
对Python+opencv将图片生成视频的实例详解
2019/01/08 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
python关于倒排列的知识点总结
2020/10/13 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
网络信息管理员岗位职责
2014/01/05 职场文书
2014年元旦联欢会活动策划方案
2014/02/16 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
批评与自我批评范文
2014/10/15 职场文书
小学优秀教师材料
2014/12/15 职场文书
基于Go语言构建RESTful API服务
2021/07/25 Golang