Изменения

Перейти к: навигация, поиск
м
Неправильные способы реализации
swap(random(1..n), random(1..n))
В самом деле: число способов сгенерировать последовательность в первом случае равно <tex>n^n</tex>, во втором равно в то время как существует всего <tex> n!</tex> возможных перестановок из <tex> n</tex> элементов. Поскольку <tex> (n^2)^n</tex>, а всего последовательностей никогда не может делиться на <tex> n!</tex>. Для того, чтобы сгенерированные последовательности были равновероятны, необходимо хотя бы, чтобы число способов получить последовательность было кратно их общему числу. То есть в первом случае необходимо без остатка при <tex> n > 2</tex>(так как <tex> n^!</tex> делится на число <tex> n) \vdots - 1</tex> , которое не имеет с <tex> n!</tex> а во втором случае общих простых делителей), то некоторые перестановки должны появляться чаще, чем другие. Аналогично для второго случая, где число способов сгенерировать последовательность равно уже <tex>((n^2)^n) \vdots n!</tex>, что заведомо не выполняется при подстановке любого нечетного числа, начиная с 3.
==Примечание==
39
правок

Навигация