CodeKitHub
Генераторы

Жеребьёвка имён

Последнее обновление:

Ручной розыгрыш имён для Тайного Санты или обмена подарками упирается в реальную математическую проблему: чисто случайное перемешивание может случайно назначить человека самому себе, а повторная жеребьёвка до тех пор, пока результат «не будет выглядеть правильно», на самом деле уже не случайна. Этот инструмент решает эту проблему правильно — введите имена всех участников, и он вычислит расстановку без неподвижных точек (перемешивание с математической гарантией того, что никто не достанется самому себе), а затем скроет каждый результат за кнопкой раскрытия по нажатию, чтобы люди могли проверить своё назначение на общем экране, не видя чужих.

Что это за инструмент?

Расстановка без неподвижных точек (дерэнжмент) — это конкретное математическое понятие: перестановка (изменение порядка) множества, при которой ни один элемент не остаётся на своей исходной позиции. Применительно к обмену подарками это означает перемешать имена всех участников в новом порядке так, чтобы никто не оказался в паре с самим собой — именно то ограничение, которое нужно для честной жеребьёвки Тайного Санты, и именно то, что наивное перемешивание вроде `array.sort(() => Math.random() - 0.5)` само по себе НЕ гарантирует.

Этот инструмент генерирует расстановку без неподвижных точек, многократно перемешивая список с помощью рандомизированного алгоритма и проверяя ограничение на самоназначение, используя `crypto.getRandomValues()` для базовой случайности, а не `Math.random()` — тот же криптографически стойкий источник, что используется в [Генераторе паролей](/password-generator/) и [Генераторе случайных букв](/random-letter-generator/) этого сайта.

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

Зачем его использовать?

  • Вас назначили ответственным за Тайного Санту в офисе, и список из 15 коллег нужно разыграть прямо в рабочем чате — вводите имена, и через пару секунд у вас пары, где никто не достался сам себе.
  • В прошлом году на семейном застолье бабушка вытянула собственную бумажку, и жеребьёвку пришлось переделывать при всех — расстановка без неподвижных точек в этом инструменте исключает такую ситуацию математически, а не по везению.
  • На корпоративе под рукой только один телефон, который передают по кругу — кнопка «нажмите, чтобы раскрыть» позволяет каждому посмотреть своего адресата так, чтобы сосед не подглядел имя на экране.
  • Кто-то записался в последний момент, и список вырос с 8 до 9 человек — просто исправьте имена и снова нажмите «Разыграть пары»: ни регистрации, ни установки приложения не требуется.
  • Не хочется хранить список имён сотрудников в облачной таблице — здесь всё считается прямо в браузере, ничего не уходит на сервер, что снимает вопросы к внутренним правилам обработки данных.

Как использовать

  1. Введите имя каждого участника на отдельной строке — как минимум 3 разных имени.
  2. Нажмите «Разыграть пары» — инструмент вычисляет корректную расстановку без неподвижных точек, чтобы никто не оказался в паре с самим собой.
  3. В строке каждого участника показано его имя со скрытым результатом — передавайте устройство по кругу или демонстрируйте экран, и пусть каждый нажмёт свою собственную кнопку «Нажмите, чтобы раскрыть», чтобы увидеть, кому он дарит подарок.
  4. Нажмите на раскрытие ещё раз, чтобы скрыть результат после того, как кто-то его проверил, оставляя экран готовым для следующего человека.

Пример

Ввод

Alice, Bob, Carol, Dave

Результат

Alice → Carol, Bob → Dave, Carol → Bob, Dave → Alice

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

Расстановка без неподвижных точек против обычного случайного перемешивания

Обычное перемешивание и расстановка без неподвижных точек выглядят похоже, но только одно из них действительно безопасно для обмена подарками.

МетодМожет ли назначить человека самому себе?Честно ли пересдавать до тех пор, пока не «будет выглядеть правильно»?
Обычное случайное перемешиваниеДа — реальная возможность, особенно в маленьких группахНет — ручное отклонение плохих результатов смещает исход
Расстановка без неподвижных точек (этот инструмент)Нет — математически исключено по построениюН/Д — любой корректный результат уже удовлетворяет ограничению

Похожие инструменты

Для других случайных розыгрышей и генераторов попробуйте эти инструменты.

Генератор фэнтезийных имён · Генератор случайных чисел · Генератор случайных букв

Как провести жеребьёвку без накладок

  • Если все находятся в одной комнате, стоит вслух сверить список имён перед нажатием «Разыграть пары» — это избавит от ситуации, когда опечатка в имени мешает потом найти свой результат.
  • Для удалённой команды безопаснее показать список имён через демонстрацию экрана, а затем по очереди попросить каждого открыть ту же страницу у себя и нажать «нажмите, чтобы раскрыть».
  • Если в группе состоит пара, и им не принципиально вытянуть друг друга — беспокоиться не о чем; если же это нежелательно, скорректируйте результат вручную или уберите одного из них из списка и назначьте отдельно.
  • Каждая новая жеребьёвка даёт совершенно другую комбинацию, поэтому повторное нажатие «Разыграть пары» только потому, что результат «не понравился», по сути превращается в способ подстроить, кто кому достанется.

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

Что произойдёт, если имя введено дважды?

Инструмент требует, чтобы все имена были уникальными, прежде чем провести жеребьёвку — если он обнаруживает повторяющуюся строку, он просит сначала исправить список, поскольку два участника с одинаковым именем сделали бы невозможным различение их результатов.

Может ли кто-то вытянуть собственное имя?

Нет — инструмент специально вычисляет расстановку без неподвижных точек, перемешивание с математическим свойством, при котором ни один элемент (человек) не оказывается сопоставлен со своей исходной позицией. Эта гарантия обеспечивается алгоритмом, а не оставлена на волю случая, как это было бы при обычном случайном перемешивании.

Какое минимальное количество людей необходимо?

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

Как сохранить приватность результатов, если мы все смотрим на один и тот же экран?

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

Отправляются ли имена или результат жеребьёвки на сервер?

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

Можно ли исключить, чтобы супруги не достались друг другу?

Нет, в текущей версии нельзя исключить конкретную пару — расстановка без неподвижных точек гарантирует только то, что никто не достанется самому себе. Если нужно избежать, чтобы муж и жена вытянули друг друга, проще всего нажимать «Разыграть пары» заново, пока не выпадет результат без такого совпадения, либо убрать одного из них из списка и назначить вручную.

Что будет с результатом, если закрыть или обновить страницу?

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

Есть ли ограничение на число участников за один раз?

Жёсткого лимита на количество участников нет. Инструмент одинаково работает и для большой семьи, и для целого офиса — достаточно минимум трёх имён, — просто с ростом числа людей передавать по кругу одно устройство займёт больше времени.

Может ли один и тот же человек каждый год вытягивать одного и того же коллегу?

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

Похожие инструменты