Перемешать список

Создаём случайный порядок строк и подробно показываем каждый обмен

Что нужно сделать?

Перемешать список
Подготовка списка

Повторы останутсяПеремешивание изменит только порядок, но не состав списка.

Список перемешивается в браузере и не сохраняется.

Новый порядок появится здесьПосле нажатия покажем готовый список и разберём каждую перестановку по шагам.
Фишер—Йетс + Web CryptoОбновлено 15 июля 2026

Как правильно перемешать список

Перемешать список — значит оставить те же элементы, но расставить их в случайном порядке. Простого многократного обмена случайных пар недостаточно: разные итоговые порядки могут получить разные шансы. Удобник использует алгоритм Фишера—Йетса, в котором все перестановки различимых строк равновероятны.

Шаг 1. Одна строка — одна позиция

Каждая непустая строка считается отдельной позицией. Пробелы по краям удаляются. Если один текст записан дважды, по умолчанию он остаётся в списке два раза — ведь задача перемешивания состоит в изменении порядка, а не в очистке данных.

[А, А, Б] → после перемешивания всё равно две строки А и одна строка Б

Шаг 2. Начинаем с последней позиции

Пусть есть пять строк с индексами 0, 1, 2, 3 и 4. Для позиции 4 выбирается случайный индекс от 0 до 4 включительно. Две строки меняются местами. После этого позиция 4 готова и больше не участвует.

Рабочая позиция5-яСлучайный выбориз позиций 1…5После обмена5-я закреплена

Шаг 3. Уменьшаем рабочую область

Далее обрабатывается позиция 3, но случайный индекс выбирается уже только от 0 до 3. Затем позиция 2 получает индекс от 0 до 2. Последний шаг выполняется для позиции 1 с выбором между индексами 0 и 1.

Текущая позиция для человекаВнутренний индекс iДопустимый индекс jЧто готово после шага
540…4Позиция 5
430…3Позиции 4–5
320…2Позиции 3–5
210…1Позиции 2–5

Шаг 4. Почему результат равномерный

На первом шаге любая из n строк может попасть на последнюю позицию с шансом 1/n. После её закрепления любая из оставшихся n − 1 строк может попасть на предпоследнюю позицию с шансом 1/(n − 1). Так продолжается до конца.

Число полных порядков: n × (n − 1) × … × 2 × 1 = n!

Каждая конкретная последовательность выборов создаёт один конкретный порядок. Поскольку на каждом шаге индекс равномерен, все n! порядков различимых билетов получают одинаковую вероятность 1/n!.

Шаг 5. Зачем отбрасывать хвост 32-битного диапазона

Web Crypto возвращает одно из 2³² целых чисел. Если это количество не делится на размер рабочего диапазона нацело, простая операция остатка дала бы нескольким индексам по одному лишнему исходу. Поэтому сначала оставляется только самая большая часть диапазона, которая делится на N без остатка.

  1. Размер диапазона: N = i + 1.
  2. Граница: L = ⌊2³² ÷ N⌋ × N.
  3. Проверка: если u ≥ L, число отбрасывается и берётся новое.
  4. Индекс: j = u mod N.

Почему некоторые строки могут остаться на месте

Перемешивание не обязано сдвигать каждую строку. На шаге случайный индекс может совпасть с текущим, тогда строка обменивается сама с собой. Более того, весь итоговый порядок иногда случайно совпадает с исходным — это один из допустимых равновероятных результатов.

Как проверить перемешивание

  • Количество строк до и после должно совпасть.
  • Каждое исходное вхождение должно встретиться в результате столько же раз.
  • Для n строк алгоритм должен выполнить n − 1 шагов.
  • На шаге с индексом i выбранный индекс j должен лежать от 0 до i.
  • Каждое принятое случайное число u должно быть меньше своей границы L.

Частые вопросы

Как случайно перемешать список?

Вставьте каждую запись на отдельной строке и нажмите «Перемешать список». Сервис очистит пустые строки, затем алгоритм Фишера—Йетса пройдёт справа налево и поменяет строки местами.

Сохранятся ли все строки?

Да. По умолчанию сохраняется каждое непустое вхождение, включая повторы. После перемешивания изменяется порядок, но не состав. Удаление одинаковых строк включается только отдельной настройкой.

Может ли получиться исходный порядок?

Да. Исходный порядок входит в число допустимых равновероятных перестановок. Такое совпадение не означает ошибку; можно перемешать ещё раз.

Почему алгоритм идёт с конца списка?

После случайного обмена последняя рабочая позиция становится окончательной и исключается из следующих шагов. Так каждая полная перестановка получает одинаковый шанс.

Почему используется Web Crypto?

Web Crypto создаёт криптографические 32-битные случайные значения. Неполный хвост диапазона отбрасывается, поэтому остаток от деления не даёт преимуществ отдельным индексам.

Сохраняется ли введённый список?

Нет. На сайте перемешивание выполняется локально в браузере. Содержимое строк не сохраняется и не передаётся в аналитику.