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 相关文章推荐
PHP5 字符串处理函数大全
Mar 23 PHP
PHP初学者常见问题集合 修正版(21问答)
Mar 23 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
php网站来路获取代码(针对搜索引擎)
Jun 08 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
php+mysqli事务控制实现银行转账实例
Jan 29 PHP
php用ini_get获取php.ini里变量值的方法
Mar 04 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
php对接java现实加签验签的实例
Nov 25 PHP
Laravel框架查询构造器简单示例
May 08 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
Dec 29 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中global和$GLOBALS[]的分析之一
2012/02/02 PHP
php生成缩略图填充白边(等比缩略图方案)
2013/12/25 PHP
PHP学习笔记之字符串编码的转换和判断
2014/05/22 PHP
php结合ACCESS的跨库查询功能
2015/06/12 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
用JS实现一个页面多个css样式实现
2008/05/29 Javascript
jquery DOM操作 基于命令改变页面
2010/05/06 Javascript
完美解决AJAX跨域问题
2013/11/01 Javascript
浅谈JavaScript中运算符的优先级
2015/07/07 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
灵活的理解JavaScript中的this指向
2016/02/25 Javascript
两种js监听滚轮事件的实现方法
2016/05/13 Javascript
jQuery动态生成表格及右键菜单功能示例
2017/01/13 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
JavaScript数值类型知识汇总
2019/11/17 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
Vue实现菜单切换功能
2020/11/08 Javascript
对于Python中线程问题的简单讲解
2015/04/03 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
python如何生成各种随机分布图
2018/08/27 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
Python数据类型之List列表实例详解
2019/05/08 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
python使用opencv在Windows下调用摄像头实现解析
2019/11/26 Python
python Paramiko使用示例
2020/09/21 Python
Selenium执行完毕未关闭chromedriver/geckodriver进程的解决办法(java版+python版)
2020/12/07 Python
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
关于感恩的演讲稿400字
2014/08/26 职场文书
2014年减负工作总结
2014/12/10 职场文书
明星邀请函
2015/02/02 职场文书
个人年终总结怎么写
2015/03/09 职场文书
宣传部部长竞选稿
2015/11/21 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript