10个数字、26个大写字母、26个小写字母,共 62 中状态
即可视为 62 进制数
pow(62, 4) = 14776336
即当连续递增的情况下,14776336 个之后才会出现重复
远远满足你的需要

解决方案 »

  1.   

    哦,没注意你只能是小写字母
    那就是
    pow(36, 4) = 1679616
    也还是能够满足的
      

  2.   

     
    这样写产生9位的随机字符串  100w 应该没问题吧
    /*
         * 随机字符串
       */
       function random_str($length)
       {  
    $arr = array_merge(range('a', 'z'),range(0, 9));
    $str = '';
    $arr_len = count($arr);
    for ($i = 0; $i < $length; $i++)
    {
    $rand = mt_rand(0, $arr_len-1);
    $str.=$arr[$rand];
    }

        return $str;
       } 
      

  3.   

    不能猜测,应该验证一下set_time_limit(0);
    mysql_connect();
    mysql_select_db('test');
    mysql_query('create temporary table a (ch varchar(9))');$len = 1000000;
    for($i=0; $i<$len; $i++) {
      $c = random_str(9);
      mysql_query("insert into a values ('$c')") or die(mysql_error());
    }
    $rs = mysql_query('select ch, count(*) as cnt from a group by 1 having cnt>1') or die(mysql_error());
    while($r = mysql_fetch_assoc($rs)) {
      echo join(':', $r), PHP_EOL;
    }
    一次产生一百万个确实没有重复