前几天,做了个小小的实验,生成了一组数据,数据要求是包含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-Z\s]+$/",$str)){

        $data_arr[] = $str;

    }

} while ( count($data_arr) < 1000 );

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

切记欲速则不达

by as

最新文章

  1. Oracle连接odbc数据源
  2. Apache日志配置详解(rotatelogs LogFormat)
  3. mongodb不同版本之间有很大的差异
  4. Linux下使用mail命令发送邮件
  5. es5 中类的2种基本实现方法
  6. MySQL表-----查询------
  7. 途虎养车Tuhu商城系统开发
  8. ●BZOJ 1444 [Jsoi2009]有趣的游戏
  9. 转摘app-稳定性测试
  10. TortoiseGit之配置密钥
  11. GNU C和C99标准中的可变参数宏(variadic macros)
  12. Verilog实现模长等于六十的二进制编码计数器
  13. go语言 http学习
  14. ERP退货系统管理(四十五)
  15. Scala学习笔记——函数式对象
  16. UML学习笔记(五)--顺序图
  17. Java学习04 (第一遍)
  18. EF只更新变化的字段
  19. bzoj2564 集合的面积
  20. 解决错误:Couldn&#39;t open file /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

热门文章

  1. C++构造函数实例——拷贝构造,赋值
  2. oracle 11g 版本自带移除,省时省力
  3. TCP报文格式,TCP的三次握手和四次挥手&amp;hosts文件
  4. Apache Compress-使用
  5. 【Gray Code】cpp
  6. RSA进阶之维纳攻击(wiener-attack )
  7. csu-2018年11月月赛Round2-div1题解
  8. 07 JVM 是如何实现反射的
  9. Windows命令行中pip install jieba,但没有安装到anaconda3中
  10. 声卡(Sound Card)基本概念