<?
/***************************|* zly [email protected] *|
\***************************/for ($i=1;$i<=100000;$i++)
{
$randem_str = md5( time() . microtime() ); //取时间、md5打乱,生成随机数,产生不可重复数
$string = ereg_replace ("[a-z]", "", $randem_str) . time(); //去掉字母,只保留数字,再增加当前时间,防止数字不够十位
echo substr( $string , 0 , 10 ) . "\n"; 
}
?>

解决方案 »

  1.   

    zly [email protected]
    太绝了吧
      

  2.   

    我的笨方法。<?php
    //结果数组
    $array=array();//随机种子
    mt_srand(microtime()*1000000);//
    $i=0;
    while($i<100000){
        $k=mt_rand(10000,99999).mt_rand(10000,99999);
        if(!in_array($k,$array)){
            $array[]=$k;
            $i++;
        }
    }//输出
    print_r($array);
    ?>
      

  3.   

    呵呵,简单,简单<?
    $data = array();
    $i=1
    while($i<=100000)
        $data[] = '1'.str_pad(++$i, 9, "0", STR_PAD_LEFT);  
    ?>
      

  4.   

    <?php 
    $ar = array();
    for($i = 0; $i<100000; $i++){
    $num = rand(1000000000, 9999999999);
    if(!in_array($num, $ar))
    $ar[] = $num;
    }
    ?>
      

  5.   

    给个类/**
    *  类名: 编码类
    *  描述: 关于编码
    *  其他: 2004-5-10
    */
    class code
    {
        /**
        *   函数名称:   genID
        *   函数功能:   设置种子
        *   输入参数:   $size -------------- 要生成的数量
        *              $length ----------- 长度
        *              $mode ------------- 模式
        *   函数返回值: 返回值说明
        *   其它说明:   说明
        */
        function genID($size,$length,$mode)
        {
            $code_array = array();
            $offset = 1.5;// 为避免递归,采用取子集的办法
            $offsize = $size*$offset;
            for($count = 0; $count < $offsize; $count++)
            {
                $code_array[] = $this->_seed( $length, $mode );
            }
            $unique_array = array_unique( $code_array );
            return array_slice ($unique_array, 0,$size);
        }    /**
        *   函数名称:   seed
        *   函数功能:   设置种子
        *   输入参数:   $length ----------- 长度
        *              $mode ----------- 模式
        *   函数返回值: 返回值说明
        *   其它说明:   说明
        */
        function _seed($length=10, $mode)
        {
            switch( $mode )
            {
                case '1':
                    $str = '1234567890';
                    break;
                case '2':
                    $str = 'abcdefghijklmnopqrstuvwxyz';
                    break;
                case '3':
                    $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
                    break;
                case '4':
                    $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
                    break;
                case '5':
                    $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
                    break;
                case '6':
                    $str = 'abcdefghijklmnopqrstuvwxyz1234567890';
                    break;
                default:
                    $str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
                    break;
            }        $result = '';
            $seedlength = strlen($str)-1;
            for( $i = 0; $i <= $length-1; $i++ )
            {
                $num = mt_rand( 0, $seedlength );
                $result .= $str[$num];
            }
            return $result;
        }
    }
    $code = &new code;
    print_r($code->genID( 100000, 10, 1));
      

  6.   

    高效与代码短小并不总是画等号的。
    一个十万次的循环确实太恐怖了<?php
    $num = 100000; // 待产生的数字个数
    $step = 1; // 每个数字的间隔$ver = substr(phpversion(), 0, 1); // 取得php大版本号
    if($ver < 5)
      $step = 1; // 只有php5中range函数才有step参数
    srand((double)microtime()*1000000); // 初始化随机数发生器
    $low = rand(1000000000, 9999999999); // 随机获取初值// 检查终值是否仍为十位,并计算终值
    if(strlen($low+($num-1)*$step) > strlen($low))
      $high = $low-($num-1)*$step;
    else
      $high = $low+($num-1)*$step;// 建立一个包含指定范围单元的数组
    if($ver > 4)
      $ar = range($low, $high, $step);
    else
      $ar = range($low, $high);// 把他弄乱,你可能需要这样的
    shuffle($ar);echo count($ar); // 检查生成的数组大小?> 
      

  7.   

    对不起 ccterran(iwind) 
    我没有看清你用了
    if(!in_array($num, $ar))
    $ar[] = $num;
    但这样一来循环次数要远大于100000了
      

  8.   

    xuzuning(唠叨) 的程序运行出来有问题
    我的版本是php4,只能得出这样的结果
    100000只有一个数字。
      

  9.   

    10万个不重复的for($i=200000;$i<=100000;$i--)
      $ds[]=$i;
      

  10.   

    for($i=200000;$i>=100000;$i--)
      $ds[]=$i;
      

  11.   

    to  xemail(pop3) 
    是的,只应该有一个数字:100000
    因为只有一句输出:
    echo count($ar); // 检查生成的数组大小数组$ar中就是你所需要的数据,循环输出$ar的数据一般都会超时的。要知道,那可是十万个数据呀!
      

  12.   

    以下为我用过类似功能的代码,请各位指教:
    <?php
    $rand_num=100000;
    $cc=0;
    $out=array();
    while ($cc<$rand_num)
    {
      $zhi=rand(1000000000, 9999999999);
      if ($out[$zhi]==false)
      {
        $out[$zhi]=true;
        $cc++;
      }
    }
    //以下为输出
    $value=array();
    while($value=each($out))
    {
      echo $value[key];
    }?>
      

  13.   

    对不起,上面的代码在输出的部份前还要加上reset($out)语句;