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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
PHP生成月历代码
Jun 14 PHP
PHP 替换模板变量实现步骤
Aug 24 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
php设计模式 Builder(建造者模式)
Jun 26 PHP
第三章 php操作符与控制结构代码
Dec 30 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
Nov 04 PHP
PHP curl使用实例
Jul 02 PHP
人脸识别测颜值、测脸龄、测相似度微信接口
Apr 07 PHP
PHP PDOStatement::fetchColumn讲解
Jan 31 PHP
关于laravel模板中生成URL的几种模式总结
Oct 18 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中静态变量的使用方法实例分析
2016/12/01 PHP
PHP+JQUERY操作JSON实例
2017/03/23 PHP
改进UCHOME的记录发布,增强可访问性用户体验
2011/01/17 Javascript
javascript的内存管理详解
2013/08/07 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
JavaScript函数模式详解
2014/11/07 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
JavaScript中数据结构与算法(二):队列
2015/06/19 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
从零开始搭建webpack+react开发环境的详细步骤
2018/05/18 Javascript
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
Vue渲染过程浅析
2019/03/14 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
JS实现电脑虚拟键盘的操作
2020/06/24 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python httplib,smtplib使用方法
2008/09/06 Python
python获取图片颜色信息的方法
2015/03/18 Python
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
基于python的Tkinter实现一个简易计算器
2015/12/31 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
分享8个非常流行的 Python 可视化工具包
2019/06/05 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
Python使用pdb调试代码的技巧
2020/05/03 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
La Redoute英国官网:法国时尚品牌
2017/04/27 全球购物
文员自我评价怎么写
2013/09/19 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
办公室禁烟通知
2015/04/23 职场文书
在职证明书模板
2015/06/15 职场文书
烈士陵园扫墓感想
2015/08/07 职场文书
python缺失值的解决方法总结
2021/06/09 Python
Nginx location 和 proxy_pass路径配置问题小结
2021/09/04 Servers