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