@SoffTeam

Рандом число из нескольких диапазонов?

Интересует реализация следующего момента

к примеру у нас есть несколько числовых диапазонов
1-17
18-25
26-100

диапазон 18-25 по какой-либо причине выпал

как реализовать поиск рандомного числа из нескольких диапазонов: 1-17, 26-100
  • Вопрос задан
  • 414 просмотров
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$ranges = [[1, 17], [26, 100]];
$total = 0;
foreach ($ranges as $range)
  $total += $range[1]-$range[0]+1;
$rand = rand(0, $total-1);
foreach ($ranges as $range) {
  $rand += $range[0];
  if ($rand > $range[1])
    $rand -= $range[1]+1;
  else
    break;
}
echo $rand;
Ответ написан
Wolfnsex
@Wolfnsex Куратор тега PHP
Если не хочешь быть первым - не вставай в очередь!
как реализовать поиск рандомного числа из нескольких диапазонов: 1-17, 26-100
Как вариант - можете создать массив, каждый элемент которого будет содержать 2 значения - минимальное и максимальное число. Дальше с помощью функции rand() выбираете число из диапазона от 0 до длинна_массива-1 - это будет индекс массива. Далее, с помощью той же функции, выбираете рандомное число уже из этого диапазона.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@red-barbarian
v = rand(1,100-8)
если v> 17 то v = v+8
получится равномерное распределение вне зависимости от длины диапазонов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы