Изменения

Перейти к: навигация, поиск
Обоснование
==Обоснование==
Проведем доказательство по индукцииКорректность данного алгоритма очевидна. Всего перестановок <tex> n! </tex>, поэтому вероятность На каждой итерации цикла мы выбираем случайный элемент из них должна быть равна всех оставшихся, то есть у нас есть <tex> \frac {1}{n!}</tex>. Показажемспособов выбрать 1 элемент, что на каждом <tex>i</tex>n -ом шаге цикла любая перестановка из первых <tex>i1</tex> элементов равновероятнаспособов выбрать 2 элемент ...* при <tex> i = 1 </tex> перестановка всего однаспособ выбрать последний элемент. Таким образом, и, очевидно, что база верна* пусть при последовательность длины <tex> i = k - 1 n</tex> каждая перестановка первых <tex>i</tex> элементов равновероятна, то есть вероятность каждой отдельно взятой перестановки мы можем получить на <tex>i</tex>-ом шаге цикла равна <tex> $$n \frac {1}{times (kn -1)!}</tex>: при <tex> i = k </tex>:: <tex> a = \{ a_{times \ldots \times 1}, a_{2}, ..., a_{k-1}, k, ... \} = n! $$ </tex>: после <tex>swap(iспособами, random(1..i))что совпадает с числом различных перестановок длины </tex> вероятность какого-то числа оказаться на <tex>k</tex>-ом месте равна <tex>\frac{1}{k}n</tex>. Вероятность же какой-то перестановки первых <tex>(k-1)</tex> элементов при известном <tex>a_{k}</tex> останется <tex> \frac {1}{(k-1)!}</tex>, что в результате даетЭто означает, что вероятность перестановки первых выбрать любую перестановку длины <tex>kn</tex> элементов равна <tex> \frac {1}{kn!}</tex><br/>Другой способ обоснования заключается в том, что каждая перестановка в результате работы этого алгоритма может получиться ровно одним способом, причем всегда ровно за <tex> n </tex> шагов, таким образом автоматически получается, что то есть все <tex> n!</tex> перестановок перестановки равновероятны.<br/>
==Неправильные способы реализации==
Анонимный участник

Навигация