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 相关文章推荐
让PHP支持页面回退的两种方法[转]
Feb 14 PHP
php 多个submit提交表单 处理方法
Jul 07 PHP
PHP数据类型之布尔型的介绍
Apr 28 PHP
php 注册时输入信息验证器的实现详解
Jul 05 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 PHP
CI框架整合smarty步骤详解
May 19 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
php获取linux命令结果的实例
Mar 13 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
May 26 PHP
PHP使用HTML5 FormData对象提交表单操作示例
Jul 02 PHP
PHP下载文件函数与用法示例
Sep 27 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之字符串变相相减的代码
2007/03/19 PHP
php跨站攻击实例分析
2014/10/28 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
htm调用JS代码
2007/03/15 Javascript
js对数字的格式化使用说明
2011/01/12 Javascript
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
JS模仿手机端九宫格登录功能实现代码
2016/04/28 Javascript
使用BootStrap和Metroui设计的metro风格微网站或手机app界面
2016/10/21 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
JS中的作用域链
2017/03/01 Javascript
vue.extend实现alert模态框弹窗组件
2018/04/28 Javascript
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
详解Python3中yield生成器的用法
2015/08/20 Python
Python连接数据库学习之DB-API详解
2017/02/07 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
2017/09/11 Python
python学习入门细节知识点
2018/03/29 Python
儿童学习python的一些小技巧
2018/05/27 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
django foreignkey外键使用的例子 相当于left join
2019/08/06 Python
Python常用编译器原理及特点解析
2020/03/23 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
python安装mysql的依赖包mysql-python操作
2021/01/01 Python
简单掌握CSS3将文字描边及填充文字颜色的方法
2016/03/07 HTML / CSS
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
Nike德国官网:Nike.com (DE)
2018/11/13 全球购物
工作室成员个人发展规划范文
2014/01/24 职场文书
解除合同协议书
2014/04/17 职场文书
部门年终奖分配方案
2014/05/07 职场文书
重阳节标语大全
2014/10/07 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
医生个人年终总结
2015/02/28 职场文书
python中的None与NULL用法说明
2021/05/25 Python