• PHP生成随机码


    前几天,做了个小小的实验,生成了一组数据,数据要求是包含1000个元素,每个元素为10个随机的数字加字母的组合。

    嗨呀,说写就写,然后用for循环生成了一组数据,看起来还不错,先把代码贴上来。

    //随机因子
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    
    $data_arr = array();
    
    for($i = 0 ; $i < 1000 ; $i++){
        
        $str = '';
        
        for($j = 0 ; $j < 10 ; $j++){
            
            $s = $chars[mt_rand(0,strlen($chars)-1)];
            $str .= $s;
            
        }
        
        $data_arr[] = $str;
    }

    然后在文档里一看生成的数据。好像不太合理,梳理了下数据构成,反思了下生成数据的要求其实有3点:

    1、随机码生成 1000 个不重复的10位数字+字母组合;
    2、每一个元素不出现重复的随机因子;
    3、每一个元素不能是纯数字或者纯字母;

    数据里包含很多纯字母,每一个元素都含有相同的随机因子。

    之后改进了下写法,根据要求需要判断是不是纯数字,纯字母,而且不能相同

    do {
        
        $str = '';
        
        do {
            
            $s = $chars[mt_rand(0, strlen($chars)-1)];  
            
            if(strpos($str,$s) === false){
                
                $str .= $s;
                
            }
            
        } while ( strlen($str) < 10 );
        
        if(!in_array($str,$data_arr) && !is_numeric($str) && !preg_match("/^[a-zA-Zs]+$/",$str)){
            
            $data_arr[] = $str;
            
        }
        
    } while ( count($data_arr) < 1000 );

    换了一种循环方式,加入了条件,重新生成了1000个随机码,完美!

    切记欲速则不达

    by as

  • 相关阅读:
    第221题:最大正方形
    第238题:除自身以外数组的乘积
    简单易懂的拓扑排序
    第207题 课程表
    第198题:打家劫舍
    第四章 初始化与清理
    【笔记】jquery判断两个日期之间相差多少天
    【笔记】spring定时器时间配置实例
    【笔记】jquery加减乘除及科学计算法处理
    string 日期相加和相减
  • 原文地址:https://www.cnblogs.com/widgetbox/p/9243775.html
Copyright © 2020-2023  润新知