PHP从rand()函数中排除数字

时间:2011-02-28 07:29:04

标签: php random

我正在运行rand()3次,我想从函数的可能性中排除前两个结果。就像它命中1和5一样,我希望下一个rand()从它的范围中排除1和5。我该怎么做?

3 个答案:

答案 0 :(得分:5)

怎么样:

do {   
    $rand_number = rand();

}while(in_array($rand_number, array(1,5));

答案 1 :(得分:1)

如果要生成三个唯一的随机(ish)数字,可以使用:

$totalNumsNeeded = 3;
$randoms = array();
while (count($randoms) < $totalNumsNeeded) {
    $random = rand($min, $max);
    if (!in_array($random, $randoms)) {
        $randoms[] = $random;
    }
}

答案 2 :(得分:0)

$last[];

for ($i = 0; $i < 10; $i++) {
  $min = getLow($last);
  $max = getHigh($last);

  $myrand =  rand ( $min, $max )
  $last[i] = $myrand;
}

你需要构建两个函数来通过$ last数组进行迭代并返回你希望它返回的变量...或者如果你只是寻找最后两个,你可以初始化$ min和$ max outside循环并在每次迭代时设置它们。这会不断收紧你的随机范围。

另一种解决方案可能是

$last;
While (true) {
  $myRand = rand();
  if ($myRand != $last) {
    $last = $myRand;
    break;
  }

}