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 相关文章推荐
Excel数据导入Mysql数据库的实现代码
Jun 05 PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 PHP
php中利用post传递字符串重定向的实现代码
Apr 21 PHP
PHP导出MySQL数据到Excel文件(fputcsv)
Jul 03 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
Jun 17 PHP
php魔术函数__call()用法实例分析
Feb 13 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
PHP session会话操作技巧小结
Sep 27 PHP
PHP实现多图上传(结合uploadify插件)思路分析
Nov 30 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
PHP商品秒杀问题解决方案实例详解【mysql与redis】
Jul 22 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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
全国FM电台频率大全 - 29 青海省
2020/03/11 无线电
PHP数据缓存技术
2007/02/14 PHP
PHP中curl_setopt函数用法实例分析
2015/04/16 PHP
User Scripts: Video Download by User Scripts
2007/05/14 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
javascript实现tabs选项卡切换效果(自写原生js)
2013/03/19 Javascript
使用js实现按钮控制文本框加1减1应用于小时+分钟
2013/12/09 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
jQuery仅用3行代码实现的显示与隐藏功能完整实例
2015/10/08 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
js html css实现复选框全选与反选
2016/10/09 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
关于Vue组件库开发详析
2018/07/01 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
ant-design表单处理和常用方法及自定义验证操作
2020/10/27 Javascript
python3如何将docx转换成pdf文件
2018/03/23 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
Python计算IV值的示例讲解
2020/02/28 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
德国家具在线:Fashion For Home
2017/03/11 全球购物
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
俄罗斯香水和化妆品在线商店:Aroma-butik
2020/02/28 全球购物
营销专业应届生求职信
2013/11/26 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
关于学习的演讲稿
2014/05/10 职场文书
委托书怎样写
2014/08/30 职场文书
教师查摆问题及整改措施
2014/10/11 职场文书
新郎结婚感言
2015/07/31 职场文书
教师外出学习心得体会
2016/01/18 职场文书
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android