我正在运行rand()3次,我想从函数的可能性中排除前两个结果。就像它命中1和5一样,我希望下一个rand()从它的范围中排除1和5。我该怎么做?
答案 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;
}
}