$numlenght=23; //数据库记录总数,这不要我交你吧
$n=20; //你要得到记录的总数
function randnum($numlenght){
mt_srand((double)microtime()*1000000);
$num = mt_rand(1,$numlenght);
return $num;
} $i = 1;
while ($i<=20){
$randtest=randnum($numlenght);
$char = $randtest;
echo $char."<br>";
$i++;
}
$n=20; //你要得到记录的总数
function randnum($numlenght){
mt_srand((double)microtime()*1000000);
$num = mt_rand(1,$numlenght);
return $num;
} $i = 1;
while ($i<=20){
$randtest=randnum($numlenght);
$char = $randtest;
echo $char."<br>";
$i++;
}
根据上面的函数产生的随机数,虽然是在1和$numlenght之间产生的,但是有重复的啊,我这里不能产生重复的:(
请大虾继续指教
$IDArr=array();
//这里省去了向$IDArr中添加元素的代码
$n=20;
$i = 1;
$nowIDArr=array(); //存放已经取出的ID
while ($i<=20){
$randtest=randnum($numlenght);
if(!in_array($IDArr[$randtest],$nowIDArr)){
array_push($nowIDArr,$IDArr[$randtest]);
$i++;
}
}
function randnum($numlenght){
mt_srand((double)microtime()*1000000);
$num = mt_rand(1,$numlenght);
return $num;
}
$randtest=randnum($num);
$char[$i]=$randtest;
while ($i<10)
{
$j = 1;
$ttag=0;
while($ttag==0)
{
$randtest=randnum($num);
while($j<=$i)
{
if(strcmp($char[$j],$randtest)!=0)
{
$j++;
}
if(strcmp($char[$j],$randtest)==0)
{
break;
}
}
if($j>$i)
{
$ttag=1;
}
}
if($ttag=1)
{
$i++;
$char[$i]= $randtest;
echo $char[$i];
echo "<br>";
}
}大家帮看看,好象有BUG,有时候会产生2个重复的数字,而且循环太多,应该如何改善程序呢