我又有个新问题了。
如何从0到m个连续的自然数中,取出n个不重复的随机数呢?(n<m)请楼下忽略标题的问题...

解决方案 »

  1.   

    随机后,判断是否存在就行了in_array
      

  2.   

    <?php
    set_time_limit(5);class randNum
    {
    /**
     * 获取某范围内不重复的随机值列
     *
     * @param integer $min  最小值
     * @param integer $max   最大值
     * @param integer $n  数量
     * @return array -> integer 返回随机数字组成的数组
     */
    public function getRandNum($min,$max,$n)
    {
    $returnNum = array();
    $numCount = null;
    settype($min,'integer');
    settype($max,'integer');
    settype($n,'integer');
    $isBreak = false;
    do
    {
    $returnNum[] = mt_rand($min,$max); # 推入随机数
    $numCount = count($returnNum); # 计算数组单元数目
    if ($numCount == $n)
    {
    $returnNum = array_unique($returnNum); # 清理相同值
    $numCount = count($returnNum); # 重新计算单元数目
    if ($numCount == $n)
    {
    $isBreak = true; # 跳出
    }
    }
    }while (!$isBreak) ;
    sort($returnNum); # 排序(自然)
    return $returnNum;
    }
    }
    print_r(randNum::getRandNum(1000000,5000000,6));
    ?>