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 相关文章推荐
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
Aug 09 PHP
PHP执行批量mysql语句的解决方法
May 02 PHP
控制PHP的输出:缓存并压缩动态页面
Jun 11 PHP
php教程之phpize使用方法
Feb 12 PHP
PHP字符串中特殊符号的过滤方法介绍
Feb 18 PHP
浅谈php7的重大新特性
Oct 23 PHP
PHP编程开发怎么提高编程效率 提高PHP编程技术
Nov 09 PHP
PHP使用http_build_query()构造URL字符串的方法
Apr 02 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 PHP
php中加密解密DES类的简单使用方法示例
Mar 26 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
如何开发一个虚拟域名系统
2006/10/09 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
ThinkPHP3.1新特性之命名范围的使用
2014/06/19 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
JQuery 获取和设置Select选项的代码
2010/02/07 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
动态的绑定事件addEventListener方法的使用
2014/01/24 Javascript
js获取checkbox值的方法
2015/01/28 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
JS实现文档加载完成后执行代码
2015/07/09 Javascript
JS版元素周期表实现方法
2015/08/05 Javascript
jQuery动态添加
2016/04/07 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
JavaScript中常见的八个陷阱总结
2017/06/28 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
layui实现数据分页功能
2019/07/27 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
浅谈dataframe中更改列属性的方法
2018/07/10 Python
Python安装Flask环境及简单应用示例
2019/05/03 Python
在Tensorflow中查看权重的实现
2020/01/24 Python
关于HTML5的安全问题开发人员需要牢记的
2012/06/21 HTML / CSS
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
教师研修随笔感言
2014/01/23 职场文书
先进党支部事迹材料
2014/12/24 职场文书
纪录片信仰观后感
2015/06/08 职场文书
新郎婚礼致辞
2015/07/27 职场文书
2015团员个人年度总结
2015/11/24 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers