Создаём случайные команды, объясняя размер и назначение каждого участника
Что нужно сделать?
Разделить список на группы
Группы появятся здесьПокажем готовые команды, расчёт их размеров, все случайные обмены и назначение каждого участника.
Баланс ±1 + Web CryptoОбновлено 15 июля 2026
Как разделить список на равные случайные группы
Здесь решаются две разные задачи одновременно. Сначала математика определяет, сколько мест должно быть в каждой группе. Затем случайное перемешивание решает, кто займёт эти места. Если смешать эти действия в один непонятный выбор, результат трудно проверить; поэтому Удобник показывает их отдельно.
Шаг 1. Считаем только непустые строки
Каждая очищенная непустая строка — отдельный участник. Пробелы в начале и конце убираются, а текст внутри сохраняется. Одинаковые строки по умолчанию не объединяются: два одинаковых имени могут обозначать двух разных людей.
[Анна, Борис, Анна] → 3 участника, если удаление повторов выключено
Шаг 2. Выбираем способ задания групп
Количество группВы задаёте g напрямую: например, 3 команды.Размер группыВы задаёте максимум s, а число групп равно ⌈n ÷ s⌉.
Режим размера не создаёт две полные группы и одну крошечную. После вычисления числа групп все участники распределяются заново как можно ровнее.
Шаг 3. Делим с остатком
Базовый размер — целая часть от деления n на g. Остаток показывает, скольким группам нужно дать ещё по одному месту.
10 ÷ 3 = 3, остаток 1 → размеры 4, 3 и 3
Участников n
Групп g
n = g × q + r
Размеры
Разница
10
3
10 = 3 × 3 + 1
4, 3, 3
1
12
3
12 = 3 × 4 + 0
4, 4, 4
0
8
3
8 = 3 × 2 + 2
3, 3, 2
1
Шаг 4. Почему дополнительное место получают первые группы
Остаток нельзя разделить на части участника. Поэтому по одному целому месту добавляется группам 1, 2 и далее, пока остаток не закончится. Номера групп заранее определяют только их размер, но не людей: перед назначением весь список равномерно перемешивается.
Шаг 5. Перемешиваем без перекоса по модулю
Алгоритм Фишера—Йетса фиксирует позиции справа налево. На каждом шаге Web Crypto создаёт число u, затем из полного 32-битного диапазона оставляется наибольшая часть, которая делится на число доступных позиций без остатка.
Рабочий размер: N = i + 1.
Граница: L = ⌊2³² ÷ N⌋ × N.
Принятие: используем только u < L.
Индекс: j = u mod N.
Шаг 6. Назначаем каждый билет ровно один раз
После перемешивания список уже имеет случайный порядок. Первые строки занимают места группы 1, следующие — группы 2 и так далее. Одна позиция не может одновременно попасть в две группы, а число всех мест заранее равно числу участников.
Как проверить результат
Сумма размеров всех групп равна числу участников после очистки.
Каждое исходное вхождение встречается в группах ровно один раз.
Получено запрошенное или рассчитанное число групп.
Разница максимального и минимального размеров не превышает 1.
Перемешивание n строк содержит ровно n − 1 шагов.
Каждое принятое случайное число меньше своей границы L.
Частые вопросы
Как случайно разделить список на группы?
Введите каждого участника на отдельной строке, выберите количество групп или максимальный размер одной группы и нажмите кнопку. Сервис вычислит сбалансированные размеры, перемешает участников и назначит каждую строку ровно один раз.
Что происходит, если участники не делятся поровну?
Сначала каждая группа получает одинаковый базовый размер. Остаток распределяется по одному дополнительному месту в первые группы. Поэтому размеры отличаются максимум на одного участника.
Чем отличаются количество групп и размер группы?
В первом режиме вы прямо задаёте число команд. Во втором задаёте максимальное желаемое число участников, а сервис округляет количество групп вверх и затем выравнивает их размеры.
Сохраняются ли одинаковые строки?
Да. По умолчанию каждое вхождение считается отдельным участником. Точное удаление одинаковых очищенных строк включается отдельной настройкой.
Как обеспечивается случайность?
Список перемешивается алгоритмом Фишера—Йетса. Web Crypto создаёт 32-битные значения, а rejection sampling отбрасывает неполный хвост диапазона до вычисления индекса.
Сохраняется ли список участников?
Нет. На сайте расчёт выполняется локально в браузере. Содержимое строк не сохраняется и не отправляется в аналитику.