Я столкнулся с этим следующим анализом алгоритмов перетасовки:
Q: заданный массив различных целых чисел, дайте алгоритм случайным образом переупорядочить целые числа, чтобы каждое возможное переупорядочение равно вероятно. Другими словами, учитывая колоду карт, как вы можете перетасовать они такие, что любая перестановка карт одинаково вероятна?
Хороший ответ: пройдите по элементам по порядку, заменив каждый элемент на случайный элемент в массиве, который не появляется раньше, чем элемент. Это занимает время O (n). Обратите внимание, что существует несколько возможных решения этой проблемы, а также несколько хороших ответов которые неверны. Например, небольшое изменение вышеизложенного алгоритм, посредством которого каждый элемент с любым элементом в массив не дает каждого переупорядочения с равной вероятностью.
Что я хотел бы знать, так это то, почему переключение каждого элемента с любым другим элементом в массиве не приводит к хорошему тасованию, а не к использованию Knuth shuffle (который описан). Кроме того, как переменные Кнута выбирают значения с равной вероятностью? Любая математика или доказательство с большой благодарностью.