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 动态执行带有参数的类方法
Apr 10 PHP
PHP 事件机制(2)
Mar 23 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
Jan 16 PHP
php GUID生成函数和类
Mar 10 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
PHP整合七牛实现上传文件
Jul 03 PHP
PHP标准类(stdclass)用法示例
Sep 28 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
Jan 17 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
php格式文件打开的四种方法
Feb 24 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP实现一个按钮点击上传多个图片操作示例
Jan 23 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 $_SERVER[&quot;REQUEST_URI&quot;]获取值的通用解决方法
2010/06/21 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP合并静态文件详解
2014/11/14 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
纯js简单日历实现代码
2013/10/05 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
BootStrap创建响应式导航条实例代码
2016/05/31 Javascript
js中class的点击事件没有效果的解决方法
2016/10/13 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
用Electron写个带界面的nodejs爬虫的实现方法
2019/01/29 NodeJs
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
跟老齐学Python之集成开发环境(IDE)
2014/09/12 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
20个常用Python运维库和模块
2018/02/12 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
简单了解python单例模式的几种写法
2019/07/01 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
家长会学生家长演讲稿
2013/12/29 职场文书
幼儿园六一儿童节文艺汇演主持词
2014/03/21 职场文书
生日寄语大全
2014/04/08 职场文书
《鹬蚌相争》教学反思
2014/04/22 职场文书
2015入党自传书范文
2015/06/26 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
廉政党课工作报告案例
2019/06/21 职场文书