Перемешать список
Вставьте список (каждый элемент с новой строки) — инструмент случайно перемешает порядок элементов.
Как перемешать список в случайном порядке
Вставьте элементы по одному на строку и нажмите «Перемешать ещё раз» — инструмент выдаст те же строки в случайном порядке. Ничего не удаляется и не добавляется: меняется только последовательность. Это удобно для очереди выступлений, порядка ходов в игре или случайной сортировки задач на день.
Перемешивание работает по алгоритму Фишера — Йейтса. Идея простая: алгоритм идёт по списку с конца и каждый элемент меняет местами со случайным из ещё не тронутых. Один проход — и готово. Для списка из N элементов существует N! (N факториал) возможных перестановок, и этот алгоритм делает каждую из них равновероятной — у десяти строк это уже больше трёх миллионов вариантов порядка.
Случайные индексы берутся из crypto.getRandomValues — криптографического генератора, встроенного в браузер. Это не привычный Math.random: предсказать порядок заранее нельзя, а каждое нажатие кнопки даёт новую независимую перестановку, не связанную с предыдущей.
Пример: на конференции десять докладчиков — Иванов, Петров, Сидорова, Кузнецов, Смирнова и другие. Вставляете фамилии, жмёте кнопку и получаете честный порядок выступлений: «Смирнова, Кузнецов, Иванов…». Весь список упорядочен за одно нажатие, и никто не обвинит организатора в том, что он поставил «своих» первыми. Результат можно скопировать или сразу распечатать — кнопки для этого есть под панелью.
Если порядок показался «подозрительным» — скажем, две подруги оказались рядом, — это не сбой, а нормальное свойство случайности: совпадения в ней неизбежны. Нажмите кнопку ещё раз, и получите новую перестановку, статистически независимую от предыдущей.
Чем перемешивание отличается от случайного выбора
Случайный выбор достаёт один или несколько элементов, а остальные отбрасывает. Перемешивание сохраняет всё: нужен не победитель, а полный случайный порядок — кто за кем выступает, в какой последовательности задавать вопросы или обзванивать клиентов. Если нужен один победитель, откройте «Случайный выбор из списка»; если порядок всех участников — оставайтесь здесь.
Почему нельзя перемешать «в лоб» через sort
Популярный в сети приём sort(() => Math.random() - 0.5) даёт смещённые результаты: элементы, стоявшие ближе к началу, чаще там и остаются. Фишер — Йейтс такой проблемы не имеет — именно поэтому он считается стандартом честного перемешивания уже больше полувека.
Как зафиксировать результат жеребьёвки
Для официальной очерёдности — выступлений, сдачи работ, очереди на приём — сохраните итог сразу после нажатия: скопируйте список в документ или распечатайте страницу. Пока исходный список и момент перемешивания видны всем участникам, к результату не придраться.
Пустые строки и дубликаты
Пустые строки инструмент отбрасывает, а одинаковые строки оставляет как есть: каждая займёт своё место в новом порядке, дедупликации нет. Если повторы в списке не нужны, сначала уберите их отдельно — и только потом перемешивайте.
Где пригодится случайный порядок
- очередь докладов, ответов у доски или защит проектов;
- порядок хода в настольной игре;
- случайная последовательность вопросов в викторине;
- перемешивание списка дел, когда порядок по алфавиту надоел.
Частые вопросы
Все ли перестановки равновероятны?
Да. Алгоритм Фишера — Йейтса гарантирует, что каждая из N! возможных перестановок выпадает с одинаковой вероятностью.
Чем перемешивание отличается от случайного выбора из списка?
Перемешивание меняет порядок всех элементов и ничего не удаляет, а случайный выбор достаёт один или несколько элементов и отбрасывает остальные.
Сколько раз можно перемешивать один и тот же список?
Сколько угодно: каждое нажатие кнопки создаёт новую независимую перестановку, прошлые результаты на неё не влияют.
Теряются ли элементы при перемешивании?
Нет, на выходе ровно те же непустые строки, что и на входе, — изменяется только их порядок. Пустые строки игнорируются.
Куда отправляется мой список?
Никуда: перемешивание происходит локально в вашем браузере, данные не покидают устройство.
Можно ли перемешать очень длинный список?
Да, алгоритм делает один проход по списку, поэтому справится и с тысячами строк практически мгновенно.