Выше вам предложили несколько вариантов решения: работа со списком, удаление файлов.
Однако, общие направления врядли помогут, если отсутствует понимание того как работает программа. Для исправления этого недочета требуется изучение программного продукта.
Ну, а по теме, для экономии ресурсов, я бы рекомендовал работу со списком. Для начала нужно создать пустой файл и привязать его к списку.
Далее работаем примерно по следующему алгоритму:
- Берем количество строк из списка со списком файлов? Если строк меньше 1, то получаем список файлов.
- Берем случайную строку и списка с удалением (она будет содержать путь к файлу).
- Используем полученный в предыдущем пункте путь к файлу для неких операций (например, загружаем на сайт в качестве аватара).
- Переходим к пункту 1.
Таким образом вы сможете использовать все файлы из каталога в случайном порядке. Единственное но, - как только список опустеет - он снова будет пополнен. Если это не нужно, то можно каждый раз перед запуском проекта вручную создавать список со списком файлов.
Update: В процессе взаимодействия с
Miller7 по данному вопросу удалось оптимизировать алгоритм, удалив лишние действия (if и получение количества строк). На данный момент алгоритм выглядит следующим образом:
- Берем случайную строку и списка с удалением (она будет содержать путь к файлу). Если строку взять не удалось, то по красной ветке переходим к получению списка файлов.
- Используем полученный в предыдущем пункте путь к файлу для неких операций (например, загружаем на сайт в качестве аватара).
- Переходим к пункту 1.