Как вы можете перебрать фиксированный диапазон целых чисел (скажем, 100000-999999) в сложном для прогнозирования порядке?
- предположим, что диапазон может быть достаточно большим, что было бы нецелесообразно хранить все возможные целые числа в массиве или хранить массив каждого найденного вами элемента.
- вы должны удалять каждое число в диапазоне один раз и только один раз и быть в состоянии сказать, когда вы закончите, т.е. нет оставшихся номеров
т.е. Я бы хотел что-то более элегантное, чем просто A) выбрать случайное число, а затем B) проверить, было ли оно уже использовано, и если так, вернитесь к шагу A по следующим причинам (если вы не можете убедить меня иначе):
- который действительно будет сосать, когда вы начнете заканчивать номера
- сообщение о том, что у вас закончились неиспользованные номера, может быть непомерно дорогостоящим
- Такой подход мог бы также иметь проблемы с concurrency, если у вас есть много клиентов или потоков, пытающихся сделать это в одно и то же время из того же диапазона.