根据条件生成随机数?

时间:2014-01-05 07:12:11

标签: php random

是否可以根据条件生成随机数?

我想生成一个随机数, 1-1000 。但是,我不希望相同的随机值生成我的变量中已存在的任何数字

<?php
    $low= 0;
    $height= 1000;
    $num_1 =1;
    $num_2 =3;
    $num_3 =4;
    $num_4 =6;
    $num_5 =2;

    $num = rand($low, $height) & != ($num_1 - $num_5) ;
?>

3 个答案:

答案 0 :(得分:1)

$low= 0;
$height= 1000;
$numbers = array(1, 3, 4, 6, 2);

$num = rand($low, $height);

while (in_array($num, $numbers)) {
    $num = rand($low, $height);
}

我假设将“不允许”值添加到数组会更有效吗?

答案 1 :(得分:1)

根据我的理解,我认为你暗示你需要UNIQUE随机数变量。

虽然对于五个数字的情况,您可以使用上面提供的解决方案,但解决方案并不保证平稳运行(如果rand函数无限期地返回相同的数字,但对于大数字几乎可能最少)。< / p>

算法:

low = 0
height = 1000

val = array(1,2,3,4,5,....1000)// better not to waste cycles generating them

i=0

while(i<5)
{
t = rand(low , height);
num[i] = val[t];
val[t] = val[height];   
i++;
height--;
}

答案 2 :(得分:0)

忍受这个漫长的条件:

$num = rand($low, $height);
while($num == $num_1 || $num == $num_2 || $num == $num_3 || $num == $num_4 || $num == $num_5){
    $num = rand($low, $height);
}