Перемешать список онлайн
Перемешайте строки списка в случайном порядке: seed для повторяемости, разнесение дублей, режим без старых мест, TXT/CSV и таблица «было → стало».
Пустое поле использует обычный браузерный Math.random(); один и тот же seed повторяет порядок.
Перемешать строки в случайном порядке
Вставьте список по одному элементу на строку — инструмент вернёт те же строки в случайной очерёдности. Все непустые элементы сохраняются, пустые строки игнорируются, а пробелы по краям каждой строки обрезаются.
Подходит для очереди выступлений, рассадки, плейлиста, вопросов теста, дежурств и бытовой жеребьёвки порядка. Это именно перемешивание всего списка, а не выбор победителя и не деление на команды.
Как пользоваться
- Вставьте элементы по одному на строку.
- Выберите опции: нумерацию для копирования, разнесение одинаковых строк, запрет оставаться на старом месте или seed.
- Нажмите «Перемешать» или клавишу Space, когда фокус не в поле ввода.
- Скопируйте результат, скачайте TXT/CSV или раскройте таблицу «было → стало».
Опция «С нумерацией» влияет на копируемый TXT-результат: к строкам добавляются `1.`, `2.`, `3.`. Визуальный список на странице показывает номера позиций всегда.
Для Excel и Google Sheets скопируйте колонку, вставьте её в поле, перемешайте и скопируйте результат обратно. Переносы строк сохраняют построчный формат, поэтому итог обычно вставляется обратно как столбец.
Как работает случайное перемешивание
Обычное перемешивание использует алгоритм Фишера–Йетса: инструмент проходит список с конца к началу, выбирает случайный индекс и меняет элементы местами. Такой подход предназначен именно для shuffle и не имеет перекоса, характерного для `array.sort(() => Math.random() - 0.5)`.
На каждом шаге алгоритм выбирает случайную позицию среди ещё незафиксированной части списка. Индексы считаются с нуля.
j — выбранный индекс для обмена, r — псевдослучайное число от 0 до 1, i — последний индекс текущей незафиксированной части списка.
Если все строки разные, количество возможных порядков быстро растёт с длиной списка. Перестановка здесь означает один возможный порядок этих строк.
N — количество разных строк в списке, N! — число всех возможных порядков для этих строк.
Если seed не задан, источником случайности является браузерный `Math.random()`. Он подходит для бытовых задач, учебных очередей и неофициальных командных процедур, но не является криптографическим генератором и не подходит для паролей, денежных конкурсов или юридически значимых розыгрышей.
seed — заданная строка, h — внутреннее состояние после хеширования, r_1, r_2, ... — последовательность псевдослучайных чисел.
Заданная строка хешируется во внутреннее состояние, после чего генератор получает одну и ту же последовательность для того же списка и того же seed. Это удобно для воспроизводимости, но не делает розыгрыш официальным или криптографически стойким.
Опции для дублей и старых мест
Опция «Без соседних дублей» строит порядок так, чтобы одинаковые строки не стояли рядом, если это математически возможно. Если один элемент встречается больше половины списка, разнести его без соседства невозможно, и инструмент покажет ошибку вместо сомнительного результата.
Опция «Не оставлять на старом месте» пытается сделать перестановку без фиксированных позиций: строка с первой позиции не остаётся первой, со второй — второй и так далее. Для списков с повторяющимся одинаковым текстом это ограничение может быть невыполнимо.
Сценарии использования
| Сценарий | Что в списке | Полезные опции |
|---|---|---|
| Выступления на конференции | Имена спикеров | С нумерацией |
| Игровая очерёдность | Игроки | Seed для повторяемости |
| Рассадка студентов | ФИО учеников | Без соседних дублей |
| Случайный плейлист | Названия треков | С нумерацией |
| Тест с вопросами | Формулировки вопросов | С нумерацией |
| Расписание дежурств | Имена дежурных | Не оставлять на старом месте |
| План задач | Задачи команды | CSV/TXT экспорт |
Чем отличается от других инструментов
| Задача | Что выбрать |
|---|---|
| Случайно переставить все строки | Перемешать список |
| Выбрать одного или несколько победителей | Случайный выбор из списка |
| Показать визуальный розыгрыш | Колесо фортуны |
| Упорядочить строки по правилу | Сортировка списка |
| Распределить участников по командам | Разделить список на группы |
| Убрать повторяющиеся строки | Удаление дубликатов |
Ограничения и честность результата
- Результат не является официальным протоколом розыгрыша: нет публичного журнала, подписи результата и независимого источника случайности.
- Для призов, денег, азартных игр и юридически значимых процедур нужен отдельный проверяемый процесс.
- История последних перемешиваний хранится только в текущей вкладке страницы.
- TXT и CSV экспортируют итоговый порядок, но не фиксируют доказательство честности.
- Если порядок случайно совпал с исходным или почти не изменился, это не ошибка: на коротких списках такое заметнее.
Часто задаваемые вопросы
Источники и нормативная база
- Fisher–Yates shuffle — WikipediaWikipedia
- Permutation — WikipediaWikipedia
- The Danger of Naïveté — sort by randomCoding Horror
- Math.random() — JavaScriptMDN Web Docs
Расчёты выполняются на основе указанных нормативных и справочных источников. Ссылки открываются в новой вкладке.
Похожие инструменты
Выберите случайный элемент или до 1000 результатов из списка строк. Есть режим без повторов, удаление дублей, копирование и история текущей сессии.
Интерактивное колесо фортуны для розыгрышей и случайного выбора. Веса вариантов, режим на выбывание, звук, история победителей, сохранение списка и запуск пробелом.
Отсортируйте список по алфавиту, natural sort, числам, длине, полю строки, случайно или в обратном порядке. Локаль, дубликаты, TXT-экспорт.
Разбейте список на N групп или группы по N элементов. Случайное распределение, балансировка остатка, экспорт CSV/JSON/TXT.
Сравните два списка: совпадения, отличия, только в первом, только во втором, режимы set/multiset, диаграмма Венна и экспорт CSV/JSON.
Удалите повторяющиеся строки из списка или, наоборот, найдите только дубли. Сохранение первого/последнего вхождения, без учёта регистра, копирование и TXT.