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 相关文章推荐
BBS(php &amp; mysql)完整版(四)
Oct 09 PHP
用PHP+java实现自动新闻滚动窗口
Oct 09 PHP
php 取得瑞年与平年的天数的代码
Aug 10 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
Oct 12 PHP
解析php防止form重复提交的方法
Jul 01 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
php图片上传类 附调用方法
May 15 PHP
10个值得深思的PHP面试题
Nov 14 PHP
php删除二维数组中的重复值方法
Mar 12 PHP
PHP的mysqli_stat()函数讲解
Jan 23 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
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
超酷的网页音乐播放器DewPlayer使用方法
2010/12/18 Javascript
js有关元素内容操作小结
2011/12/20 Javascript
JSON 数据格式介绍
2012/01/13 Javascript
js事件(Event)知识整理
2012/10/11 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
node.js中的path.dirname方法使用说明
2014/12/09 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
AngularJS入门教程之更多模板详解
2016/08/19 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
对angularJs中$sce服务安全显示html文本的实例
2018/09/30 Javascript
微信小程序如何获取群聊的openGid以及名称详解
2019/07/17 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
[20:46]Ti4循环赛第三日VG vs DK
2014/07/12 DOTA
python中精确输出JSON浮点数的方法
2014/04/18 Python
Python函数式编程指南(四):生成器详解
2015/06/24 Python
在Django的URLconf中使用命名组的方法
2015/07/18 Python
剖析Django中模版标签的解析与参数传递
2015/07/21 Python
python模拟事件触发机制详解
2018/01/19 Python
高效使用Python字典的清单
2018/04/04 Python
wxPython实现列表增删改查功能
2019/11/19 Python
python def 定义函数,调用函数方式
2020/06/02 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
SKECHERS官方旗舰店:美国舒适运动休闲品牌
2017/12/22 全球购物
巴西购物网站:Estrela10
2018/12/13 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
个人工作总结范文2014
2014/11/07 职场文书
团结友爱主题班会
2015/08/13 职场文书
使用Python脚本对GiteePages进行一键部署的使用说明
2021/05/27 Python
vue 给数组添加新对象并赋值
2022/04/20 Vue.js