是否可以根据条件生成随机数?
我想生成一个随机数, 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) ;
?>
答案 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);
}