Я ищу математический подход для генерации случайного числа между [a, b) с отверстиями в [c, d), [e, f), [g, h) и т. Д., Где a < b и диапазоны находятся в границах.
Я нашел здесь множество примеров того, как заставить алгоритм работать, если есть один пропущенный диапазон, но, похоже, не удается найти эффективный в пространстве / времени подход, который обобщает на несколько диапазонов. Я имею в виду, что оба:
a. Список всех возможных диапазонов и выбор из этого списка: не подходит для больших диапазонов
b. Генерация случайного числа и проверка, является ли он одним из диапазонов, в противном случае повторная попытка: неограниченные условия выполнения
Некоторые существенные тестовые случаи могут быть:
generate_random(start=0, end=100, exclude: [(2,50),(51, 100)])
generate_random(start=0, end=1e16, exclude: [(1e6,1e7),(1e3, 1e4)])
Вот некоторые из примеров Я нашел: