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

Случайный порядок строк: перемешать весь список или выбрать N случайных строк. Seed для повторяемого результата, удаление дубликатов перед перемешиванием, исходные переносы строк сохраняются. Всё считается в браузере.

Настройки

Перемешать весь список или взять из него несколько случайных строк

Режим выбора: сколько строк взять из списка в выдачу

Одинаковый seed даёт одинаковый порядок. Последовательность нестойкая: её повторит любой, кто знает seed

Дополнительно
Удалить дубликаты перед перемешиваниемПовтор строки выкидывается из списка, первое вхождение остаётся
Учитывать регистр«Кот» и «кот» — разные строки. Работает при удалении дубликатов и в выборе без повторов
Без повторов в выдачеСтрока не попадёт в выдачу дважды. Работает в режиме выбора N строк

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

Исходные строки

Результат

Вставьте список слева — порядок появится сразу

строк: 0

Зачем перемешивать строки

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

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

Пустое поле seed включает системный генератор браузера, поэтому порядок не повторяется и предсказать его нельзя. Заполненный seed делает выдачу воспроизводимой: тот же список и тот же seed дают тот же порядок — это удобно для тестовых данных и для проверок, но не годится там, где порядок не должен быть известен заранее. Список не покидает браузер: перемешивание идёт на JavaScript на вашей машине, ничего не отправляется и не сохраняется.

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

Чем seed отличается от системного генератора и почему по seed результат нестойкий?

Пустое поле seed включает системный генератор браузера (crypto.getRandomValues): порядок каждый раз новый, предсказать его нельзя. Заполненное поле сворачивается в число и запускает детерминированный генератор: тот же seed при том же списке и тех же настройках даёт тот же порядок, поэтому его можно записать, повторить и показать кому-то ещё. Стойкости у такой последовательности нет: тот, кто видит поле seed, повторит выдачу целиком. Если порядок не должен быть известен заранее — например, при жеребьёвке призов, — оставляйте поле пустым.

Как получить N случайных строк без повторов?

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

Вернётся ли исходный порядок, если нажать «Перемешать снова»?

Нет: повторное нажатие даёт новую выдачу. С пустым seed порядок будет другим, а с заполненным — тем же самым, потому что генератор по seed детерминированный; чтобы получить другой порядок, измените seed. Исходный список при этом никуда не девается: инструмент его не перезаписывает, он всё время остаётся в поле слева, и оттуда его можно скопировать в любой момент.

Что происходит с дубликатами строк?

По умолчанию они остаются в списке и перемешиваются вместе с остальными, поэтому одинаковые строки могут оказаться рядом. Флажок «Удалить дубликаты перед перемешиванием» убирает повторы до перемешивания, оставляя первое вхождение. Флажок «Учитывать регистр» задаёт, как строки сравниваются: при включённом «Кот» и «кот» — две разные строки, при выключенном — одна и та же. Регистр влияет только на сравнение, в выдаче строки остаются в исходном написании; число убранных повторов видно в строке статистики.

Пустая строка перемешивается вместе с остальными?

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

Где применяют перемешивание строк?

Жеребьёвка и розыгрыш призов — список участников в случайном порядке; случайная выборка из большого списка — первые N строк перемешанного списка; тестовые данные в произвольном порядке, чтобы проверка не зависела от порядка; порядок показа карточек, заданий и вопросов, который не должен повторяться от запуска к запуску; перемешивание очереди задач. Там, где порядок не должен быть известен заранее, оставляйте поле seed пустым.

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

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