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