<?
$arr=array();
while(count($arr)<10){
$a=rand(1,200);
if(!in_array($a,$arr)){
$arr[]=$a;
}
}
echo '<pre>';
print_r($arr);
?>

解决方案 »

  1.   

    既然叫随机数,当然随机的,当然也可以相同。何谓各不相同?如果用程序控制,则不叫随机数了,1~200以后,还是要重复的。如果你是产生1~200指定个数的,可以这样写。function checkrand($k,$randnum,$i)  //自定义函数,判断随机数是否重复
    {   for($j=0;$j<=$i;$j++)
       {
          if ($randum[$i] == $k)
          {
                return(False);
           }
        }
       return(True);
    }for ($i=0;$i<20;$i++)  //产生20个例
    {
        $randnum[$i] = 0; //初始化
    }$i = 0;
    while (True)
    {
          $k = rand(1,200);      if  checkrand($k,$randnum,$i)           //值不重复
          {
              $i++;
              $randnum[$i] = $k;
              if ($i = 20)
              {
                exit();  //取得想要的随机个数,退出循环
              }       }
    }
    $randnum[]中就是满足你要的随机数。
      

  2.   

    这个问题,我刚才解决了,在这里,大家也可以看看!
    http://expert.csdn.net/Expert/topic/369/369601.xml?temp=.4610712接下来要再问一个,我取两次,第一次与第二次不能重复!
    先谢谢上面两位了,会给你们每人30分的!
      

  3.   

    用上面的in_array()可以代替自己写的checkrand()函数,效果一样。偶一时想不起来这个函数了。
      

  4.   

    关于第一次/第二次不能重复的问题,可以使用二维数组,第一次的结果放在
    $randnum[1][0]~$randnum[1][19]中,
    第二次的放在$randnum[2][0]~$randnum[2][19]中。用in_array可以保证排除第一次已选出的值。
      

  5.   

    <?
    $arr=array();
    while(count($arr)<10){
    $a=rand(1,200);
    if(!in_array($a,$arr)){
    $arr[]=$a;
    }
    }
    echo '<pre>';
    print_r($arr);
    ?>
    这段程序的作用就是从1-200中取出10个不重复的随机数。
    自己试一下先。
      

  6.   

    先谢谢各位了,楼上说的程序,我试过了是正确的,可以取不同的10个数
    ,我想问一下,分两次取的时候,比如第一次10个数,第二次10个数,这20个数不能有相同的如何写呀?要的是程序呀,
    我也明白用in_array()来写,可不知道怎么写才好用,好久不写了,麻烦一下各位了,你们写一下,我看一下吧!谢谢了!
      

  7.   

    倒。:(帮你帮到底吧。
    用 uGain(幽亙)的代码改,如下:<?
    while(count($arr)<10){
    $a=rand(1,200);
    if(!in_array($a,$arr)){
    $arr[0][]=$a;  //第一次这样改
    }
    }//下面是第二次取值
    while(count($arr)<10){
    $a=rand(1,200);
    if(!in_array($a,$arr)){
    $arr[1][]=$a;  //第二次取值放入另一列
    }
    }
    ?>clear?
      

  8.   

    不好意思,我做好了,结贴了,谢谢大家!<?
    $arr=array();
    while(count($arr)<10){
    $a=rand(1,200);
    if(!in_array($a,$arr)){
    $arr[]=$a;
    }
    }
    sort($arr);
    for($i = 0; $i < count($arr); $i++)
    {
        echo $arr[$i]."\n";
    }echo "再10个数!";
    echo "<br>";
    $brr=array();
    while(count($brr)<10){
    $b=rand(1,200);
    if(!in_array($b,$arr)){
    if(!in_array($b,$brr)){
    $brr[]=$b;
    }
    }
    }
    sort($brr);
    for($j = 0; $j < count($brr); $j++)
    {
        echo $brr[$j]."\n";
    }
    ?>
      

  9.   

    把$arr的值保留下来,做为第二次取数的基准。
    也就是说第二次取数的时候不要加
    $arr=array();
    这句,直接用已有的$arr。