• PHP内置函数不重复随机数 

         

    需求:要生成一个数组,这个数组里面有10个元素,都是整形,并且是1-60之间不重复的随机数。 

    代码:

    代码示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php   
    function get_randoms($min,$max,$num){  
           $count = 0;  
           $res array();  
           while($count<$num){  
        $res[] = mt_random($min,$max);  
        $res array_flip(array_flip($res));   
        $count count($res);  
            }  
            return $res;  
     }  
        
    $result = get_randoms(1,60,10);  
    ?> 

    在这里 他用$count 结果数组的个数,他在while 循环中 使得结果数组的个数小于 目标个数。通过这样,获取到$count 是 目标个数 的一个数组。

    期间,每一个循环中,通过mt_random($min,$max),随机出区间内的一个值,存放到数组$res中,然后通过两次key-value 交换,也就是通过数组key的唯一性,使得做到不重复。

    我看了这个逻辑的代码之后,我不禁陷入了深思,假如说当你不知道array_filp 函数的时候你怎么做? 

    说白了就是用key的唯一性,使得随机数不会存在重复。那么我们能不能将这个问题简单化处理呢?

    代码示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php   
    function get_randoms($min,$max,$num){  
       $count = 0;  
       $res array();  
       while($count<$num){  
       $key = mt_random($min,$max);  
       $res[$key] = $key;  
       $count count($res);  
           }  
           return $res;  
    }  
    $result = get_randoms(1,60,10);  
    ?>  

    这样完全是单独的通过数组key的唯一性  解决了这个问题。根本就不会用到array_flip。

    总结: 

    1,因为php提供了大量的内置函数,他们的执行效率都很高。在遇到问题的时候,尽可能去用它去解决问题。这样方便而且快速。

    2,php 提供了大量的内置函数,执行效率也很高,但是,虽然效率高,还是需要时间去执行的。

    在遇到问题的时候,不要盲目的去做,可以先看清处理方法的本质,以便于巧妙的实现他。

PHP中生产不重复随机数的方法的更多相关文章

  1. PHP:产生不重复随机数的方法

    来源:http://www.ido321.com/1217.html 无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道, ...

  2. JAVA中生成指定位数随机数的方法总结

    JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 public static String getRandom1(int len) { int rs = ( ...

  3. PHP生成不重复随机数的方法

    无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下. 方法一: ...

  4. JS判断数组中是否有重复元素的方法

    判断数组中是否有重复元素,最容易想到的方法是使用2重循环,逐个遍历,比较,但是这个是最慢,最笨的方法,百度得出了更好的方法. var ary = new Array("111",& ...

  5. C#生成不重复随机数的方法

    在使用Random类生成随机数时,我们可能会碰到生成随机数重复的问题. 比如我们要生成6位数字验证码,虽然也是使用Random,但是可能出现111111,999999这样的情况. 这是因为在实例化Ra ...

  6. iOS-objective-c产生随机数的方法

    objective-c 中三种产生随机数的方法 //arc4random() 比较精确不需要生成随即种子 //通过arc4random() 获取0到x-1之间的整数的代码如下:     int val ...

  7. 使用C++生成1-33中的6个随机数,无重复

    生成1-33中的6个随机数,无重复 ------------------------------------------------------------------------   方法1.每生成 ...

  8. PHP产生不重复随机数的5个方法总结

    无论是Web应用,还是WAP或者移动应用,随机数都有其用武之地.在最近接触的几个小项目中,我也经常需要和随机数或者随机数组打交道,所以,对于PHP如何产生不重复随机数常用的几种方法小结一下 无论是We ...

  9. JS数组常用函数以及查找数组中是否有重复元素的三种常用方法

    阅读目录: DS01:常用的查找数组中是否有重复元素的三种方法 DS02:常用的JS函数集锦 DS01.常用的查找数组中是否有重复元素的三种方法  1. var ary = new Array(&qu ...

随机推荐

  1. Perl列表相关函数

    内置的列表函数有: grep, join, map, qw//, reverse, sort, unpack join:将多个元素使用给定字符串联起来join grep:从列表中筛选符合条件的元素执行 ...

  2. ARM 汇编指令 DCD

    简介 DCD:数据定义( Data Definition )伪指令 一般用于为特定的数据分配存储单元,同时可完成已分配存储单元的初始化. 语法格式: 标号 DCD(或 DCDU) 表达式 DCD(或 ...

  3. eclipse中使用pull报错(git提交冲突)

    1.工程->Team->pull:报错 解决方案: 2.工程->Team->Syschronize Workspace: 3.在左侧会将有冲突的代码列举出来:(可选操作:在其上 ...

  4. 适用于WebApi的SQL注入过滤器

    开发工具:Visual Studio 2017 C#版本:C#7.1 最有效的防止SQL注入的方式是调用数据库时使用参数化查询. 但是如果是接手一个旧的WebApi项目,不想改繁多的数据库访问层的代码 ...

  5. 腾讯云图片鉴黄集成到C#

    官方文档:https://cloud.tencent.com/document/product/641/12422 请求官方API及签名的生成代码如下: var urlList = new List& ...

  6. mysql 数据库的备份与还原 at winows

    把cmd的当前目录切换到mysql安装目录; 备份数据库world mysqldump -u root -p  world < c:\all.sql 导入数据库 新建schema world 常 ...

  7. Centos7.6安装Oracle数据库

    一.安装Oracle前准备 1.创建运行oracle数据库的系统用户和用户组 [humf@localhost ~]$ su root #切换到root Password: [root@localhos ...

  8. vbscript 语言通过序列和ADODB实现取号不重复

    目的:通过VBScript脚本利用序列的性质,实现取号不重复 首先,表空间中创建表名为TABLE_YEWID的表格,主要有以下几个字段 -- Create table create table TAB ...

  9. linux 下 ifcfg-ethx配置和解析

    网络接口配置文件[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0# Intel Corporation 82545EM ...

  10. cron和crontab命令详解 crontab 每分钟、每小时、每天、每周、每月、每年定时执行 crontab每5分钟执行一次

    cron机制        cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制 crontab参数        -u:这个参数可以让我们去编辑其他 ...