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

Вставьте список (каждый элемент с новой строки) — инструмент случайно перемешает порядок элементов.

Новый порядок
—

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

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

Перемешивание работает по алгоритму Фишера — Йейтса. Идея простая: алгоритм идёт по списку с конца и каждый элемент меняет местами со случайным из ещё не тронутых. Один проход — и готово. Для списка из N элементов существует N! (N факториал) возможных перестановок, и этот алгоритм делает каждую из них равновероятной — у десяти строк это уже больше трёх миллионов вариантов порядка.

Случайные индексы берутся из crypto.getRandomValues — криптографического генератора, встроенного в браузер. Это не привычный Math.random: предсказать порядок заранее нельзя, а каждое нажатие кнопки даёт новую независимую перестановку, не связанную с предыдущей.

Пример: на конференции десять докладчиков — Иванов, Петров, Сидорова, Кузнецов, Смирнова и другие. Вставляете фамилии, жмёте кнопку и получаете честный порядок выступлений: «Смирнова, Кузнецов, Иванов…». Весь список упорядочен за одно нажатие, и никто не обвинит организатора в том, что он поставил «своих» первыми. Результат можно скопировать или сразу распечатать — кнопки для этого есть под панелью.

Если порядок показался «подозрительным» — скажем, две подруги оказались рядом, — это не сбой, а нормальное свойство случайности: совпадения в ней неизбежны. Нажмите кнопку ещё раз, и получите новую перестановку, статистически независимую от предыдущей.

Чем перемешивание отличается от случайного выбора

Случайный выбор достаёт один или несколько элементов, а остальные отбрасывает. Перемешивание сохраняет всё: нужен не победитель, а полный случайный порядок — кто за кем выступает, в какой последовательности задавать вопросы или обзванивать клиентов. Если нужен один победитель, откройте «Случайный выбор из списка»; если порядок всех участников — оставайтесь здесь.

Почему нельзя перемешать «в лоб» через sort

Популярный в сети приём sort(() => Math.random() - 0.5) даёт смещённые результаты: элементы, стоявшие ближе к началу, чаще там и остаются. Фишер — Йейтс такой проблемы не имеет — именно поэтому он считается стандартом честного перемешивания уже больше полувека.

Как зафиксировать результат жеребьёвки

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

Пустые строки и дубликаты

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

Где пригодится случайный порядок

  • очередь докладов, ответов у доски или защит проектов;
  • порядок хода в настольной игре;
  • случайная последовательность вопросов в викторине;
  • перемешивание списка дел, когда порядок по алфавиту надоел.

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

Все ли перестановки равновероятны?

Да. Алгоритм Фишера — Йейтса гарантирует, что каждая из N! возможных перестановок выпадает с одинаковой вероятностью.

Чем перемешивание отличается от случайного выбора из списка?

Перемешивание меняет порядок всех элементов и ничего не удаляет, а случайный выбор достаёт один или несколько элементов и отбрасывает остальные.

Сколько раз можно перемешивать один и тот же список?

Сколько угодно: каждое нажатие кнопки создаёт новую независимую перестановку, прошлые результаты на неё не влияют.

Теряются ли элементы при перемешивании?

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

Куда отправляется мой список?

Никуда: перемешивание происходит локально в вашем браузере, данные не покидают устройство.

Можно ли перемешать очень длинный список?

Да, алгоритм делает один проход по списку, поэтому справится и с тысячами строк практически мгновенно.