Такой алгоритм будет замедляться к концу.
Вероятность того, что он поставит элемент с номером count_elements на нужное место, когда уже установлено count_elements-1 элементов равна (1/count_elements) при count_elements=100 (10*10) последняя итерация в основном цикле выполнится в среднем за время в 100 раз большее , чем первая.
Но существует отличная от нуля вероятность, что она выполнится за время в 1000000000 раз большее , чем первая.

В принципе прикольно, но уж больно нестабильный алгоритм.
Ща я пойду, придумаю может чего, исходник выложу.