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 相关文章推荐
第六节--访问属性和方法
Nov 16 PHP
php HtmlReplace输入过滤安全函数
Jul 03 PHP
PHP用身份证号获取星座和生肖的方法
Nov 07 PHP
CodeIgniter使用phpcms模板引擎
Nov 12 PHP
PHP自定session保存路径及删除、注销与写入的方法
Nov 18 PHP
作为程序员必知的16个最佳PHP库
Dec 09 PHP
php用户密码加密算法分析【Discuz加密算法】
Oct 12 PHP
php接口技术实例详解
Dec 07 PHP
php 浮点数比较方法详解
May 05 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
PHP实现的贪婪算法实例
Oct 17 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 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中动态修改ini配置
2014/10/14 PHP
PHP实现阳历到农历转换的类实例
2015/03/07 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
jquery创建div 实现代码
2009/04/27 Javascript
jquery下json数组的操作实现代码
2010/08/09 Javascript
Javascript调用C#代码
2011/01/17 Javascript
jQuery.Validate验证库的使用介绍
2013/04/26 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
JavaScript中判断函数、变量是否存在
2015/06/10 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
node.js从数据库获取数据
2016/05/08 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
angularjs 的数据绑定实现原理
2018/07/02 Javascript
vue路由组件按需加载的几种方法小结
2018/07/12 Javascript
JavaScript动态检测密码强度原理及实现方法详解
2019/06/11 Javascript
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
JS实现网页端猜数字小游戏
2020/03/06 Javascript
js编写简易的计算器
2020/07/29 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
跟老齐学Python之编写类之二方法
2014/10/11 Python
浅谈Python接口对json串的处理方法
2018/12/19 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
使用python处理题库表格并转化为word形式的实现
2020/04/14 Python
Django使用rest_framework写出API
2020/05/21 Python
通过实例了解Python异常处理机制底层实现
2020/07/23 Python
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
英国著名的美容护肤和护发产品购物网站:Lookfantastic
2020/11/23 全球购物
开展批评与自我批评发言材料
2014/05/15 职场文书
大学生简历自我评价2015
2015/03/03 职场文书
党员公开承诺书2016
2016/03/24 职场文书