Перейти к содержанию
Избранное

Рандомизатор списка

Обновлено:

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

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

Поля ввода
Если включено, результат будет автоматически обновляться при изменении любого значения.

Формула рандомизатора списка

Формула
\[ L=\operatorname{filter}_{\ne\emptyset}\!\left(\operatorname{trim}(\operatorname{split}(T,s))\right),\qquad j=\lfloor U(i+1)\rfloor,\qquad L_i\leftrightarrow L_j\quad(i=n-1,\ldots,1) \]

Где:

  • \(T\) — текст, введённый в поле «Элементы списка».
  • \(s\) — выбранный разделитель.
  • \(L\) — список после разбиения текста, удаления лишних пробелов у каждого элемента и отбрасывания пустых элементов.
  • \(n\) — количество элементов в \(L\); позиции нумеруются от \(0\) до \(n-1\).
  • \(U\) — новое псевдослучайное значение от \(0\) включительно до \(1\) не включительно для каждого обмена.

Калькулятор перемешивает оставшиеся элементы с последней позиции к первой. На каждой позиции \(i\) он меняет местами этот элемент с элементом на позиции \(j\) от \(0\) до \(i\).

Рандомизатор списка — пример расчёта

Пример: в поле «Элементы списка» по умолчанию указаны Apple, Banana и Orange на отдельных строках, а разделителем выбран «Перевод строки». При одном из возможных вариантов перемешивания для обоих обменов выбирается \(j=0\).

\[ [\text{Apple},\text{Banana},\text{Orange}]\xrightarrow{i=2,\,j=0}[\text{Orange},\text{Banana},\text{Apple}] \]

\[ [\text{Orange},\text{Banana},\text{Apple}]\xrightarrow{i=1,\,j=0}[\text{Banana},\text{Orange},\text{Apple}] \]

Результат: Banana, Orange, Apple, отображаемые на отдельных строках. Это лишь один из возможных результатов; другое перемешивание может дать иной порядок.

Как пользоваться калькулятором

  1. Введите или вставьте свои записи в поле «Элементы списка». Пример по умолчанию содержит Apple, Banana и Orange на отдельных строках.
  2. Установите разделитель, соответствующий символу между вашими записями: перевод строки, пробел, ;, -, | или ,.
  3. Запустите калькулятор и прочитайте результат в поле «Перемешанный список». Его записи разделены выбранным разделителем, а при выборе перевода строки результат отображается на отдельных строках.
  4. Запустите калькулятор ещё раз, если нужен другой возможный порядок. Сверьте результат с исходным списком, если необходимо учесть каждую запись.

Что делает рандомизатор списка?

Рандомизатор списка меняет порядок записей, не изменяя намеренно их содержимое. Он полезен, когда важна сама последовательность: распределение очерёдности выступлений, смена порядка тренировочных вопросов, распределение задач или определение того, какое имя будет первым. Для списка из трёх элементов по умолчанию результат содержит те же три названия фруктов, но их порядок каждый раз может отличаться.

Сначала калькулятор разбивает текст в соответствии с выбранным разделителем. Он удаляет пробелы в начале и конце каждой полученной записи и отбрасывает записи, которые после этого оказались пустыми. Затем к оставшимся записям применяется тасование Фишера–Йетса. На каждом шаге выбирается позиция из ещё не зафиксированной части списка, после чего две записи меняются местами.

Для списка из \(n\) различных записей существует \(n!\) возможных порядков. Корректно реализованное тасование Фишера–Йетса даёт этим порядкам равные шансы при равномерных случайных выборах. Здесь выборы берутся из псевдослучайного генератора JavaScript, поэтому не считайте результат независимо проверенной жеребьёвкой. Определённый порядок может встретиться более одного раза, и новый запуск не гарантированно будет существенно отличаться от предыдущего.

Практические советы и ограничения

Выбирайте разделитель до интерпретации результата. При выборе «Перевод строки» каждая строка считается одной записью, поэтому имя вроде «Алексей Ривера» остаётся целым. При выборе «Пробел» записи разделяются пробелами; то же имя превращается в две записи. Пробел также считает разделителями табуляцию и переводы строк. Остальные варианты разбивают по точному символу, указанному в меню.

Разделитель внутри записи разрежет её на части. Например, при выборе , запись «Smith, Jane» превратится в две записи. При выборе - может быть разрезано имя с дефисом. Используйте «Перевод строки», когда записи содержат знаки препинания или пробелы, и размещайте одну полную запись в каждой строке.

Повторяющиеся записи не удаляются. Если «Apple» встречается дважды, оно дважды появится в перемешанном списке и займёт две позиции при тасовании. Чтобы перед перемешиванием оставить только по одной копии каждой строки, сначала воспользуйтесь инструментом «Удаление повторяющихся строк». Пустые записи, в отличие от дубликатов, отбрасываются.

Этот инструмент не сохраняет случайное зерно (seed) и не предоставляет журнал аудита. Для конкурса или иного выбора с высокими ставками заранее определите допущенные записи и правила и используйте процесс, отвечающий требуемым стандартам прозрачности и безопасности. Для обычной организации списков вы можете сверить перемешанный список со списком, отсортированным по алфавиту, чтобы проверить имена, или использовать инструмент «Обратный порядок списка», когда нужен прямо противоположный, а не случайный порядок.

Часто задаваемые вопросы

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

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

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

Да, если каждый допущенный участник встречается в списке ровно один раз, у каждого примерно равный шанс оказаться первым. Если имя встречается дважды среди пяти записей, у этого имени два шанса из пяти. Для розыгрыша призов сначала проверьте записи и правила допуска; этот инструмент не предназначен для использования в качестве проверяемой системой жеребьёвки.

Почему после перемешивания мой список остался в том же порядке?

Неизменный порядок — это возможный случайный результат, а не обязательно ошибка. Для трёх различных записей это один из шести возможных порядков, поэтому его теоретическая вероятность при равномерном тасовании равна \(1/6\). Для коротких списков повторы особенно заметны. Запустите перемешивание ещё раз, если вам просто нужен другой порядок.

Сколько разных порядков возможно, если в списке есть повторяющиеся записи?

Повторяющиеся записи уменьшают количество видимо различных порядков. Разделите \(n!\) на факториал количества повторов каждой записи. Например, для пяти записей, содержащих две A и две B, существует \(5!/(2!\,2!)=30\) видимо различных порядков. Две копии каждой записи при тасовании всё же занимают отдельные позиции.

Что произойдёт, если я введу только пустые строки или разделители?

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

Можно ли воспроизвести предыдущий перемешанный порядок?

Надёжно — нет. Калькулятор не позволяет ввести случайное зерно (seed), поэтому вы не можете запросить ту же последовательность случайных выборов позже. Скопируйте или сохраните полученный список, если этот порядок нужен вам снова. Будущий запуск может случайно совпасть с ним, особенно для короткого списка, но возможности повтора нет.

Как с помощью перемешанного списка составить группы или пары?

Перемешайте полный список, а затем распределите идущие подряд записи по группам по заранее выбранному правилу. Для пар берите записи 1–2, 3–4 и так далее; при нечётном количестве одна запись останется без пары. Такой способ случайным образом формирует состав, но не учитывает навыки, предпочтения и другие ограничения, поэтому проверьте группы после, если это важно.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *