PHP生成不重复随机数的方法汇总

 更新时间:2014年11月19日 08:57:08   投稿:hebedich  
本文汇总了5种生成不重复随机数的方法,其中方法一、二、三是本人常用的方法,方法四五来至度娘。其余方法还是有的,也欢迎大家将遗漏的方法告之,大家共同进步
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

无论是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使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间

    php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间

    本篇文章主要介绍了php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间,具有一定的参考价值,有需要的可以了解一下。
    2016-11-11
  • Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源

    Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源

    前天帮同事改个十年前的网站 bug,页面上一堆 include require 不禁让人抱头痛哭。看到 V2EX 上的讨论说,写 PHP 不用框架等同于耍流氓。Yii Framework 是我使用了 2 年多的 PHP 框架,器大活好,皮实耐操。 Yii2 还在 Beta 中,不过不影响拿来预研。
    2014-06-06
  • laravel Model 执行事务的实现

    laravel Model 执行事务的实现

    今天小编就为大家分享一篇laravel Model 执行事务的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • 关于Yii中模型场景的一些简单介绍

    关于Yii中模型场景的一些简单介绍

    这篇文章主要给大家介绍了关于Yii中模型场景的一些简单介绍,文中通过示例代码介绍的非常详细,对大家学习或者使用Yii具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • laravel 解决crontab不执行的问题

    laravel 解决crontab不执行的问题

    今天小编就为大家分享一篇laravel 解决crontab不执行的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-10-10
  • Laravel使用memcached缓存对文章增删改查进行优化的方法

    Laravel使用memcached缓存对文章增删改查进行优化的方法

    这篇文章主要介绍了Laravel使用memcached缓存对文章增删改查进行优化的方法,结合实例形式分析了Laravel框架中使用memcached缓存实现针对增删改查等操作的优化功能,需要的朋友可以参考下
    2016-10-10
  • 微信跳一跳php代码实现

    微信跳一跳php代码实现

    这篇文章主要为大家详细介绍了微信跳一跳辅助php代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Zend Framework教程之动作的基类Zend_Controller_Action详解

    Zend Framework教程之动作的基类Zend_Controller_Action详解

    这篇文章主要介绍了Zend Framework教程之动作的基类Zend_Controller_Action的用法,结合实例形式详细分析了动作的基类Zend_Controller_Action具体功能,使用方法与相关注意事项,需要的朋友可以参考下
    2016-03-03
  • dedecms中使用php语句指南

    dedecms中使用php语句指南

    dedecms是广大站长们比较喜欢也经常使用的一款文章管理系统,使用方便,今天我们来研究下dedecms中如何使用php语句,有相同需求的小伙伴们可要看仔细了。
    2014-11-11
  • 微信公众平台开发之天气预报功能

    微信公众平台开发之天气预报功能

    这一篇文章将对大家每天都会关心的天气查询进行开发,例如,用户发送消息 “黄冈天气”,则会返回黄冈实时天气状况,以及未来两天甚至未来五天的天气状况。
    2015-08-08

最新评论

?


http://www.vxiaotou.com