Создать случайное число на основе условия?
Можно ли сгенерировать случайное число на основе условия?
Я хотел бы сгенерировать случайное число, 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 ответа
Решение
$low= 0;
$height= 1000;
$numbers = array(1, 3, 4, 6, 2);
$num = rand($low, $height);
while (in_array($num, $numbers)) {
$num = rand($low, $height);
}
Я предполагаю, что добавление ваших "не разрешенных" значений в массив будет более эффективным?
Из того, что я понимаю, я думаю, что вы подразумеваете, что вам нужны уникальные случайные числа для переменных.
Хотя для вашего случая пяти чисел вы можете использовать приведенное выше решение, тем не менее, решение не гарантирует бесперебойную работу (что если функция rand должна возвращать одно и то же число бесконечно, хотя практически не возможно для больших чисел).
АЛГОРИТМ:
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--;
}
Имейте с этим долгое условное:
$num = rand($low, $height);
while($num == $num_1 || $num == $num_2 || $num == $num_3 || $num == $num_4 || $num == $num_5){
$num = rand($low, $height);
}