Обсуждение:Тасование Фишера — Йетса
Эта статья содержит текст, переведённый из статьи Fisher–Yates shuffle из раздела Википедии на английском языке. Список авторов находится на странице истории правок оригинальной статьи. Информация о включении текстов из других источников и их авторах может быть размещена на странице обсуждения оригинальной статьи. |
Эта статья была переименована по результатам обсуждения от 24 мая 2017 года. Старое название Тасование Фишера–Йетса было изменено на новое: Тасование Фишера — Йетса. Для повторного выставления статьи на переименование нужны веские основания, иначе такое действие будет нарушать правила (см. п. 8). |
Ошибка в "вывернутом" алгоритме
[править код]В текущей версии от 11:37, 14 февраля 2022 "вывернутый" алгоритм представлен в следующем виде:
for i from 0 to n − 2 do j ← random integer with 0 ≤ j ≤ i a[i] ← a[j] a[j] ← source[i]
Здесь цикл проходит до n - 2
. Это не выглядит правильным - ведь тогда последний элемент исходного массива (с индексом n - 1
) никогда не будет вставлен в новый массив.
Стоит заметить, что в английской версии этой статьи конечная итерация цикла приходится на n - 1
, а не на n - 2
:
for i from 0 to n − 1 do j ← random integer such that 0 ≤ j ≤ i if j ≠ i a[i] ← a[j] a[j] ← source[i]
Раньше статья содержала n - 1
(последняя версия статьи с таким алгоритмом - 13:36, 25 ноября 2021). Но в версии 19:50, 3 декабря 2021 конечное значение цикла было исправлено на n - 2
- правка содержит пометку "Исправлен неправильный "вывернутый" алгоритм". Показалось странным то, что эта правка была отпатрулирована участником User:Jumpow.
Я отменил правку от 19:50, 3 декабря 2021. Если отмена этой правки покажется Вам некорректной, то пожалуйста представьте здесь в обсуждении свои аргументы перед тем как возвращать ее. Спасибо.
2600:1700:38D0:67A0:55F7:9EEA:9154:4846 06:59, 29 мая 2022 (UTC)