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作的文本留言本的例子(六)
Oct 09 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
Jun 21 PHP
php数组键名技巧小结
Feb 17 PHP
PHP实现动态web服务器方法
Jul 29 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
浅谈PHP的数据库接口和技术
Dec 09 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
PHP PDOStatement::fetchAll讲解
Jan 31 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
Dec 04 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
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
PHP文件及文件夹操作之创建、删除、移动、复制
2016/07/13 PHP
PHP实现Redis单据锁以及防止并发重复写入
2018/04/10 PHP
php通过各种函数判断0和空
2020/07/04 PHP
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
jquery遍历checkbox介绍
2014/02/21 Javascript
使用 js+正则表达式为关键词添加链接
2014/11/11 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
基于JQuery及AJAX实现名人名言随机生成器
2017/02/10 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
python并发编程之线程实例解析
2017/12/27 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
浅谈python写入大量文件的问题
2018/11/09 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
什么是CSS3 HSLA色彩模式?HSLA模拟渐变色条
2016/04/26 HTML / CSS
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
Linux的文件类型
2012/03/07 面试题
财务部经理岗位职责
2014/02/03 职场文书
大学生未来职业生涯规划书
2014/02/15 职场文书
大学生学习计划书
2014/09/15 职场文书
介绍信的格式
2015/01/30 职场文书
技术入股协议书
2016/03/22 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
Kubernetes中Deployment的升级与回滚
2022/04/01 Servers
Python实现简单得递归下降Parser
2022/05/02 Python