Все, что вам нужно знать, - это сколько файлов в каждом каталоге, чтобы выбрать каталог, в который вы должны перейти. Избегайте обхода символических ссылок и подсчета файлов в символических ссылках.
Вы можете использовать решение, аналогичное описанному в pst.
Например, у вас есть 3 каталога, и в каждом есть 20,40 и 1000 файлов.
Вы получаете всего [20,60,1060] и выбираете случайное число 0-1060. если это число больше или равно 60, вы переходите в третью папку.
Вы прекращаете обход, когда достигаете папок без папок.
Чтобы найти случайный файл по этому пути, вы можете применить тот же трюк, что и раньше.
Таким образом, вы выберете любой файл с равной вероятностью.