39
правок
Изменения
→Неправильные способы реализации
Небольшая модификация этого алгоритма, может резко сказаться на его корректности.
===Пример неправильной реализации:===
'''for''' i = n '''downto''' 1
swap(i, random(1..n))
В данном случае число способов сгенерировать последовательность равно <tex>n^n</tex>, в то время как существует всего <tex> n!</tex> возможных перестановок из <tex> n</tex> элементов. Поскольку <tex> n^n</tex> никогда не может делиться на <tex> n!</tex> без остатка при <tex> n > 2</tex> (так как <tex> n!</tex> делится на число <tex> n - 1</tex> , которое не имеет с <tex> n</tex> общих простых делителей), то некоторые перестановки должны появляться чаще, чем другие.
===Другой пример неправильной реализации:===
'''for''' i = n '''downto''' 1
swap(random(1..n), random(1..n))