Техника рандома: как распределяются Санты во время обмена
Каждый обмен подарками — это большой жизненный цикл, который непрерывно работает на протяжении нескольких недель, а иногда и месяцев (в зависимости от мероприятия).
В этой статье мы попытаемся простыми словами рассказать, как происходит назначение участников во время распределения — это самое ответственное действие, которое длится в то самый период, когда сбор заявок уже закрыт, но адреса еще никому не были назначены.
Кстати: как устроены обмены подарками, и сколько они могут продолжаться по времени мы рассказывали вот в этом месте, а еще есть интересная статья о том, как формируется рейтинг для каждого Санты, и на что он влияет: тогда Вам сюда.
Что же такое это ваше распределение? Это специально обученная система, которая производит анализ пользователей, затем «перемешивает» их между собой, выдавая определенный результат из заданных условий.
Все еще сложно? Поехали разбираться:
На картинке выше Вы можете увидеть очень обобщенный результат того, как распределяются участники между собой. Представим, что каждый шарик внутри контейнера — это отдельный пользователь, а номер на шарике: это его номер среди всех Сант. Так мы понимаем, что участник #1 должен готовить подарок для Санты под #8
Так, стоп. Но как эти шарики сюда попадают? Очень просто: когда Вы проходите регистрацию в обмене подарками, то обязательно подтверждаете свою готовность принимать участие. Тем самым, Вы попадаете в список, который будет анализироваться системой по распределению.
Именно поэтому после окончания сбора заявок покинуть список уже нельзя, если Вы передумали.
Следующим шагом мы просим систему разделить пользователей по определенному критерию. Самое (и наиболее используемое) действие — запрос к системе, чтобы та отделяла пользователей с положительным рейтингом от новичков, которые еще ни разу не принимали участие в обменах. Это самый простой показатель, который система обрабатывает за считанные секунды: так быстро, потому что в этом действии не нужно что-то сравнивать, или анализировать.
На выходе у нас получается все тот же контейнер, с единственным отличием — в нем мы отметили тех пользователей, которые не должны «выпадать» прямо сейчас при распределении.
Теперь мы полностью готовы к тому, что система начнет «выдавать» нам участников, с которыми по прежнему нужно что-то делать. Что происходит дальше?
Дальше в ход вступает так называемый сборщик участников. Он выполняет довольно кропотливую работу, с простым результатом: необходимо назначить участников, которые выпали из контейнера по несколько человек, которые внутри объединяются в так называемую «комнату».
Преимуществ таких комнат очень много:
- Все комнаты изолированы между собой — Санта 1 из комнаты 1 никогда не узнает о Санте 1 из комнаты 2;
- Соблюдается четкий порядок распределения, и наши Эльфы знают, кто кому должен дарить подарок из большого числа участников;
- Комната является замкнутой внутри себя. Таким образом каждый участник из комнаты получит свой подарок.
В некоторых обменах наш сборщик сказочно «чудил»: иногда участники отправляли подарок друг другу, а иногда в те города, в которые уже отправляли до этого. А наши Эльфы слишком поздно замечали такие нестыковки (потому что исправлять Санту после выдачи нельзя!)
А если количество участников не позволяет распределить всех поровну? Для нашего сборщика это не проблема. Заключительные комнаты будут собраны по такому принципу, чтобы общее количество нераспределенных участников было равно нулю.
Иными словами, если у нас остается 8 нераспределенных Сант, то сборщик сделает комнаты на четверых, или пятерых, и будет стараться делать это до тех пор, пока участники не закончатся.
Конечно же, есть еще очень много нюансов работы системы распределения, которая учитывает Сант по возрасту, полу, общим интересам, выбранным пожеланиям (особенно в тематических обменах) и многим другим показателям, которые не озвучены в этой статье. Также не рассказали о том, что после работы «машины» проверяем результат сами (чтобы исключить ошибки), и перезапускаем (и дополняем) систему распределения и перемешивания, чтобы получать желаемый результат.
Мы лишь постарались в общих чертах ответить на главные вопросы, и надеемся, у Вас сложилось впечатление о том, как происходит «магия» распределения.
В заключении ответим на несколько вопросов, которые могут быть Вам интересны:
Система распределений — это искусственный интеллект? Конечно же нет. Это обычный скрипт, написанный нашими разработчиками вручную, который просто сравнивает показатели участников, определяя их в ту или иную группу.
Будет ли работать распределение, если с порталом что то случится (тех. работы / сбои)? Разумеется, все будет работать исправно. На сайте вообще не производится никаких расчетов, а само распределение происходит в самом секретном месте 😶
Сколько длится распределение? Обычно от одного до трех дней, но бывает и больше, в зависимости от количества участников и наших проверок.