<?
/***************************|* 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";
}
?>
/***************************|* 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";
}
?>
太绝了吧
//结果数组
$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);
?>
$data = array();
$i=1
while($i<=100000)
$data[] = '1'.str_pad(++$i, 9, "0", STR_PAD_LEFT);
?>
$ar = array();
for($i = 0; $i<100000; $i++){
$num = rand(1000000000, 9999999999);
if(!in_array($num, $ar))
$ar[] = $num;
}
?>
* 类名: 编码类
* 描述: 关于编码
* 其他: 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));
一个十万次的循环确实太恐怖了<?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); // 检查生成的数组大小?>
我没有看清你用了
if(!in_array($num, $ar))
$ar[] = $num;
但这样一来循环次数要远大于100000了
我的版本是php4,只能得出这样的结果
100000只有一个数字。
$ds[]=$i;
$ds[]=$i;
是的,只应该有一个数字:100000
因为只有一句输出:
echo count($ar); // 检查生成的数组大小数组$ar中就是你所需要的数据,循环输出$ar的数据一般都会超时的。要知道,那可是十万个数据呀!
<?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];
}?>