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_SELF的安全问题
Sep 05 PHP
smarty 缓存控制前的页面静态化原理
Mar 15 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
php写入数据到CSV文件的方法
Mar 14 PHP
Linux操作系统安装LAMP环境
Jun 26 PHP
PHP实现的贪婪算法实例
Oct 17 PHP
PHP7下协程的实现方法详解
Dec 17 PHP
PHP的PDO预定义常量讲解
Jan 24 PHP
不常用但很实用的PHP预定义变量分析
Jun 25 PHP
thinkPHP和onethink微信支付插件分享
Aug 11 PHP
laravel实现查询最后执行的一条sql语句的方法
Oct 09 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 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
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
JavaScript 错误处理与调试经验总结
2010/08/10 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
2014/05/28 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
理解Javascript文件动态加载
2016/01/29 Javascript
基于javascript实现按圆形排列DIV元素(三)
2016/12/02 Javascript
React组件的三种写法总结
2017/01/12 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
基于DOM节点删除之empty和remove的区别(详解)
2017/09/11 Javascript
详解用webpack的CommonsChunkPlugin提取公共代码的3种方式
2017/11/09 Javascript
微信小程序简单实现form表单获取输入数据功能示例
2017/11/30 Javascript
如何给element添加一个抽屉组件的方法步骤
2019/07/14 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
Angular单元测试之事件触发的实现
2020/01/20 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
快速实现基于Python的微信聊天机器人示例代码
2017/03/03 Python
详解Python中的动态属性和特性
2018/04/07 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
python元组拆包实现方法
2021/02/28 Python
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
董事长助理工作职责范本
2014/07/01 职场文书
领导干部失职检讨书
2015/05/05 职场文书
一篇文章带你了解Python和Java的正则表达式对比
2021/09/15 Python