Может ли Python сгенерировать случайное число, исключающее набор чисел, без использования рекурсии?

Я просмотрел Python Docs(возможно, я неправильно понял), но я не увидел способа сделать это (см. ниже) без вызова рекурсивной функции.
Что я хотел бы сделать, так это сгенерировать случайное значение, которое исключает значения в середине.

Другими словами,
Давайте представим, что я хотел, чтобы Xбыло случайным числом, не входящим в
диапазон (a - b, a + b)
Могу ли я сделать это при первом проходе,
или
1. Нужно ли мне постоянно генерировать номер,
2. Проверьте, есть ли в range(),
3. Промыть полоскание?

Что касается того, почему я не хочу писать рекурсивную функцию,
1. мне кажется, что мне не нужно
2. набор чисел, для которого я это делаю, может оказаться довольно большим, и
... Я слышал, что переполнение стека - это плохо, и, возможно, я просто слишком осторожен в этом.

Я уверен, что есть хороший, Pythonic, нерекурсивный способ сделать это.

31
задан pradyunsg 29 January 2013 в 16:34
поделиться