Нужно разыграть приз, вызвать ученика отвечать или решить, кто моет посуду? Этот бесплатный онлайн-инструмент осуществляет случайный выбор из любого списка, который вы вставите. Поместите свои записи в поле «Элементы» — по одной на строку или через запятую — задайте нужное число с помощью поля «Количество» и нажмите «Сгенерировать». Список должен содержать как минимум две записи и может вмещать до 1000 элементов, каждый длиной до 200 символов.
Каждый выбор выполняется непосредственно в вашем браузере с использованием Web Crypto API (crypto.getRandomValues), которое обеспечивает криптографически надежные случайные значения на основе системной случайности. Ваш список никогда не отправляется на сервер, не логируется и недоступен нам — здесь это важнее, чем в большинстве генераторов, поскольку люди обычно вставляют базу клиентов, список класса или имена коллег. Кнопка «Загрузить из файла» обеспечивает ту же конфиденциальность: браузер читает файл и заполняет поле локально, ничего никуда не загружая.
Параметры созданы для форматов данных, которые люди реально используют. Опция «Разделитель» установлена на «Автоматически», что позволяет системе самой различать переносы строк и запятые, чтобы текст, скопированный из таблицы, чата или документа, работал без какого-либо переформатирования. Если в ваших данных форматы смешаны, зафиксируйте настройку на вариантах «С новой строки», «Запятая» или «Пробел» — учтите, что «Пробел» всегда является осознанным выбором и никогда не применяется автоматически, так как элементы вроде полных имен сами содержат пробелы, и разделение по ним сломало бы больше списков, чем исправило. Поле «Количество» определяет, сколько элементов нужно извлечь: от 1 до 100. Разыгрываете трех победителей среди 200 участников? Вставьте имена, установите «Количество» на 3 и нажмите «Сгенерировать». Два элемента управления применяются только тогда, когда это число достигает 2 или более, а до этого остаются неактивными: «Без повторений», которое решает, может ли один и тот же элемент выпасть дважды, и «Формат результата», определяющее то, как разделяются выбранные элементы — «По одному на строку», «Через пробел» или «Через запятую».
Ряд кнопок прямо в поле «Элементы» выполняет те действия, которые вам иначе пришлось бы делать где-то еще. Функция «Загрузить из файла» подтягивает список напрямую из простого текстового файла или CSV. Кнопка «Перемешать» меняет порядок элементов в поле, «Сортировать» выстраивает их по алфавиту с естественной сортировкой чисел (а повторное нажатие обращает порядок), тогда как «Очистить» полностью освобождает поле. Кнопка «Вставить пример» добавляет короткий демонстрационный список, чтобы вы могли опробовать инструмент в один клик, а «Развернуть на весь список» увеличивает поле для полного отображения длинного текста; затем «Свернуть» возвращает его к исходному размеру. Под результатом функция «Скопировать всё» отправляет каждый выбор в буфер обмена, «Сохранить в файл» записывает их на диск, а ваша «История» хранит последние 10 жеребьевок в браузере, чтобы к предыдущему результату можно было вернуться одним щелчком.
Как именно происходит выбор? Когда вы нажимаете «Сгенерировать», страница запрашивает у браузера случайные значения через crypto.getRandomValues и использует их для выбора позиций в вашем списке, вместо того чтобы полагаться на псевдослучайную функцию JavaScript, такую как Math.random(). Превращение сырого 32-битного значения в позицию — это именно то место, где генераторы незаметно ошибаются: вычисление остатка от деления значения на длину списка (modulo) является очевидным и одновременно предвзятым подходом, поскольку, если длина не делит 2^32 без остатка, элементы в начале списка выпадают чуть чаще остальных. Этот недостаток называется modulo bias (искажение деления по модулю), и он измерим, а не просто теоретичен. Данный инструмент вместо этого отбрасывает любое значение, выходящее за рамки наибольшего точного кратного длины списка, и тянет жребий снова — этот метод называется rejection sampling (выборка с отклонением). Это стоит пары дополнительных циклов, но обеспечивает точную гарантию вместо приблизительной. Позиция в списке ничего не меняет: первый и последний элементы имеют абсолютно одинаковую вероятность при каждом розыгрыше.
Переключатель «Без повторений» разделяет два принципиально разных вида жеребьевки, и в статистике для каждого есть свое название. Когда он включен, инструмент тасует копию вашего списка с помощью алгоритма Fisher-Yates и забирает элементы сверху — это то же самое, что тянуть билеты из шляпы и не класть их обратно, поэтому никто не выбирается дважды, и любая группа такого размера одинаково вероятна. Это выборка без возвращения (sampling without replacement), и именно она нужна для определения победителей, разбивки на команды и очередности. Когда переключатель выключен, каждый выбор делается независимо из всего списка, поэтому один и тот же элемент может выпасть более одного раза — выборка с возвращением (sampling with replacement), которая применяется, когда все остаются в игре в каждом раунде, например при повторных розыгрышах или в быстрой статистической выборке. Ни один из режимов не является более справедливым; они отвечают на разные задачи.
Справедливая жеребьевка вообще не должна выглядеть справедливо. Вытяните пять имен из десяти, и вы регулярно будете видеть два результата, которые стояли рядом в исходном списке, или одно и то же имя дважды подряд, как только разрешите повторения — и каждый такой случай абсолютно нормален. Каждое извлечение независимо: предыдущие выборы не оказывают ни малейшего влияния на последующие, и ни один элемент не становится «назревшим» кандидатом на победу. Инстинкт, утверждающий обратное, — это ошибка игрока (gambler's fallacy), и именно он мешает нам самим делать качественный случайный выбор. Если попросить человека выбирать наугад, мы избегаем первого и последнего элемента, стараемся не повторять имена и распределяем выбор гораздо равномернее, чем это когда-либо делает случайность. Подозрительно аккуратный результат — это почерк человека; истинная случайность генерирует скопления.
Почему стоит выбрать этот инструмент для случайного выбора из списка?
- Жеребьевка только в браузере: ваш список читается на устройстве и никуда не отправляется
- Случайность через Web Crypto API: криптографически надежно, а не Math.random()
- Без искажения деления по модулю: выборка с отклонением дает всем элементам равные шансы
- Любой формат: по одному на строку, через запятую или пробел, без переформатирования
- Режим «Без повторений»: определяйте победителей или команды так, чтобы никто не был выбран дважды
- До 1000 элементов и до 100 результатов за один розыгрыш
- Встроенные инструменты: загрузка из файла, тасование, сортировка, очистка, пример данных
- История и сохранение в файл: сохраните запись жеребьевки, которую возможно придется обосновать
- Без ограничений и бесплатно: никаких регистраций, никаких лимитов использования, ничего не хранится на наших серверах
Случайный выбор возникает везде, где решение должно выдержать любые сомнения. Учителя вызывают учеников без любимчиков и разбивают класс на проектные группы. Стримеры и маркетологи разыгрывают призы в прямом эфире перед аудиторией, которая должна верить результату. Менеджеры раздают задачи, за которые никто не берется добровольно, а команды определяют порядок презентаций или дежурства. Исследователи извлекают случайную выборку записей для аудита. Семьи прекращают споры о том, что посмотреть, а голодная компания выбирает ресторан. Общим знаменателем является выбор, который впоследствии сможет объяснить любой: розыгрыш использует криптографическую случайность, происходит исключительно на вашем устройстве, а «История» сохраняет результат, если кто-то позже о нем спросит.
У этого инструмента есть несколько объективных ограничений, о которых стоит знать. Он не может извлечь больше уникальных записей, чем содержит ваш список — для трех победителей нужно как минимум три имени — и он останавливается на 1000 элементах по 200 символов каждый, допуская максимум 100 результатов за один розыгрыш. Кнопки «Перемешать» и «Сортировать» работают построчно, поэтому список через запятую, вставленный одной строкой, будет переупорядочен только тогда, когда каждый элемент окажется на новой строке; кроме того, обе функции меняют лишь внешний вид списка, а не сам розыгрыш, который одинаково справедлив независимо от порядка элементов. Каждый элемент также умышленно имеет строго одинаковый вес, поэтому для жеребьевки, где одно имя должно считаться за два, его необходимо указать в списке дважды. В рамках этих пределов гарантия предельно жесткая — каждый элемент вашего списка имеет абсолютно равные шансы при каждом розыгрыше.