Ну, я про это же. Эти самые оговорки нарушают "случайность" требуемой перестановки.
Как раз это я и прокомментировал тут:
Поэтому и говорю, что, либо генератор будет плохим, либо там будет массив с "оставшимися элементами".
В ОЛ тяжело сделать "массив на 1024 элемента", поэтому приходится хранить в битах.
Получается на каждом шаге алгоритма нужно генерировать число от 0 до k-1 (где k это количество оставшихся чисел) и уметь выбирать/обнулять нужный k-ый ненулевой бит (если считать, что с самого начала все биты установлены в 1).
Вы готовы называть это "эффективной" реализацией?
5-10 блоков -- я ещё понимаю "эффективная реализация". А когда в ОЛ нужно заводить 32 SEL'а как ячейки памяти для 1024 битов, и потом каждый SEL обвязывать блоком "получи и очисти k-ый ненулевой бит", то это уже "эффективным" я бы не называл. Реализация -- да. Эффективная? Вряд ли.





