@IdFox

Как на php сгенерировать случайные неперекрывающиеся диапазоны?

День добрый

Подскажите, может у кого код уже готовый есть?
Как на PHP сделать генератор случайных диапазонов?
На входе имеем
- длину всего диапазона (1) - от 100 до 1000 например
- длину нужных поддиапазонов (2) - 10 например
- общее число диапазонов (3) - 3 например

Все упирается в перекрытие
Алгоритм так то простой

Из исходного диапазона чисел генерируем случайные числа исходя из (1)
Например 400, 500, 900
И получаем диапазоны 400-410, 500-510 и т.д
Тут все элементарно

А как сделать, чтобы эти диапазоны при этом не перекрывались
Т.е например, имеем (1) от 0 до 15, (2) равное 3, (3) равное 4
Велика вероятность что диапазоны перехлестнуться друг на друга
Сперва пробовал так

Отсортировал числа по возрастанию
Смотрел чтобы следующее было более, чем предыдущее + длина диапазона
Если не выполняется увеличиваю его до необходимой величины
Но тогда к концу они начинают или "скапливаться" или им "не хватает места"
Т.е их аналогично нужно как то смещать влево (в начало общего диапазона)

В общем подскажите пожалуйста или алгоритм какой или может код готовый уже есть
Порыл в интернете, как то готового или близкого ничего

Всем спасибо )
  • Вопрос задан
  • 138 просмотров
Пригласить эксперта
Ответы на вопрос 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Операции над множествами:
1. внутри диапазона -> исключаем
2. частичное перекрытие -> добавляем недостающее
3. без перекрытия -> добавляем
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы