随机产生独一无二6位的数字和对应的12位数字.比如:需要1万个
如:
244855                           587753043808
558676                           168139952943

解决方案 »

  1.   

    For($i=10000;$i<=99999;$i++) {
    Echo "244855 5877530{$i}<br>";
    }
      

  2.   

    GUID
    http://baike.baidu.com/view/185358.htm
    PHP有函数可直接生成GUID
      

  3.   

    你可以这样生成for($i=0; $i<30000; $i++) { //产生3万个6位数
      $r[] = rand(100000, 999999);
    }
    if(count(array_flip(array_count_values($r)))>1) {//检查是否有重复
      exit('有重复, 重新执行');
    }foreach(array_chunk($r, 3) as $t) { //切割成3个一组
      $res[] = array( $t[0], $t[1].$t[2]); //放到数组, 你根据你的需要进行保存
    }
    print_r($res);
      

  4.   


    $check = array();
    for($i=0; $i<30000; $i++)
    {
      do
      {
        $rnum = rand(100000, 999999);
      }
      while (isset($check[$rnum]));
      $check[$rnum] = 1;
    }
    print_r(array_keys($check));这是生成1万个不重复6位数的,12位的同理,然后两两配对使用就好了。就是用一个hash利用key记录已经生成过的数,然后用isset判断。
      

  5.   

    复制了楼上的循环代码,忘改循环边界了,应该是$check = array();
    for($i=0; $i<10000; $i++)
    {
      do
      {
        $rnum = rand(100000, 999999);
      }
      while (isset($check[$rnum]));
      $check[$rnum] = 1;
    }
    print_r(array_keys($check));
      

  6.   

    如果是5万的数据呢?我加到5万的话,也就是$i<150000,那么就会执行exit('有重复, 重新执行');
    就不能生成了.
      

  7.   

    生成1万的随机数,如果服务器不够牛的话稍微复杂一点进行判断重复,然后取值存入内存.这对于服务器来说是一笔很大的开支.
    请问bing15,你是要做什么工作需要一次性产生这么多的随机数?
    难道不能即时产生吗?类似 Echo time().rand(10000,99999);
      

  8.   

    <?php
    $numbers = range(100000,999999);
    srand((float)microtime()*1000000);
    shuffle($numbers);$i = 10000;
    foreach ($numbers as $number) {
        if ($i-- < 0) break;
        echo "$number\r\n";
    }
    ?>
      

  9.   

    php 的伪随机数发生器的周期为 32768,就是说 32768 次 rand 后就要出现重复了
    我的代码只是利用了这一点,代码中使用了数组是为了让你有机会检查
    其实只需要直接在第一个循环中输出就可以了,程序变形为$s = 100000;
    $e = 999999;
    for($i=0; $i<10000; $i++) {
      echo rand($s, $e) . ' ' . rand($s, $e) . rand($s, $e) .'<br>';
    }
    当然,在超出为随机数周期时,是需要缓存中间结果并检查是否有重复的
    你只需要1万个测试数据,就没有必要干那吃力不讨好的事情了