Мой вариант такой:
нужно скорректировать максимальное значение с учётом длин всех исключённых диапазонов, получить случайное число для обновлённого диапазона, а затем применяя список исключённых диапазонов скорректировать значение.
Пример: задано вернуть число от 1 до 6 (игральная кость), но при этом число 4 считается запретным.
Решение: получать случайное число от 1 до 5 и если оно больше и равно 4 плюсовать к результату 1 (длину исключенного диапазона).