Випадковий вибір зі списку

Вставте будь-який список — імена, завдання чи ідеї — і дозвольте цьому інструменту зробити чесний випадковий вибір. Кожне жеребкування проходить локально у браузері, тому список ніколи не залишає ваш пристрій.

Натисніть «Згенерувати», щоб отримати результат
Роздільник визначається автоматично, але ви можете вибрати його вручну нижче.
Розширені опції

Потрібно розіграти приз, викликати учня до дошки або вирішити, хто йде виносити сміття? Цей безкоштовний онлайн-інструмент випадкового вибору чесно обирає з будь-якого списку, який ви вставите. Додайте свої записи в поле «Елементи» — по одному на рядок або через кому — вкажіть потрібне число за допомогою поля «Кількість» і натисніть «Згенерувати». Список потребує принаймні двох записів і вміщує їх до 1000, кожен довжиною до 200 символів.

Кожен вибір виконується безпосередньо у вашому браузері за допомогою Web Crypto API (crypto.getRandomValues), яке забезпечує криптографічно надійні випадкові значення на основі системної випадковості вашого браузера. Ваш список ніколи не надсилається на наш сервер, тому ми ніколи не бачимо його й не фіксуємо в логах — і тут це важливіше, ніж у більшості генераторів, оскільки люди зазвичай вставляють базу клієнтів, класний журнал або імена своїх колег. Кнопка «Завантажити з файлу» дотримується цієї ж обіцянки: ваш власний браузер читає файл і заповнює поле виключно локально, нічого нікуди не завантажуючи.

Параметри створені для форматів даних, які люди справді використовують. Опція «Роздільник» стоїть на «Автоматично», що самостійно розрізняє перенесення рядків і коми та визначає, який саме варіант використовує ваш список, щоб текст, скопийований з таблиці, повідомлення або документа, працював без жодного переформатування. Якщо у ваших даних формати змішані, зафіксуйте її на варіантах «Новий рядок», «Кома» або «Пробіл» — і врахуйте, що «Пробіл» завжди є свідомим вибором і ніколи не застосовується автоматично, оскільки такі записи, як повні імена, самі містять пробіли, і розділення за ними зламало б більше списків, ніж виправило. Поле «Кількість» визначає, скільки записів слід витягнути: від 1 до 100. Розігруєте трьох переможців серед 200 учасників? Вставте імена, встановіть «Кількість» на 3 і натисніть «Згенерувати». Два елементи керування застосовуються лише тоді, коли це число сягає 2 або більше, а до того залишаються неактивними: «Без повторень», яке вирішує, чи може один і той самий запис випасти двічі, і «Формат результату», яке визначає, як розділяються виділені елементи — «По одному на рядок», «Через пробіл» або «Через кому».

Ряд кнопок безпосередньо у полі «Елементи» виконує редагування, яке вам інакше довелося б робити деінде. Функція «Завантажити з файлу» підтягує список прямо зі звичайного текстового файлу або CSV. Кнопка «Перемішати» випадковим чином змінює порядок записів у полі, «Сортувати» вишиковує їх за алфавітом із природним сортуванням чисел (а повторне натискання повертає порядок назад), тоді як «Очистити» повністю звільняє поле. Кнопка «Вставити приклад» додає короткий демонстраційний список, щоб ви могли випробувати інструмент в один клік, а «Розгорнути на весь список» збільшує поле для повного відображення довгого тексту; після чого «Згорнути» повертає його до початкового розміру. Одразу під результатом функція «Скопіювати все» відправляє кожен вибір у буфер обміну, «Зберегти у файл» записує їх на диск, а ваша «Історія» зберігає останні 10 жеребкувань у браузері, щоб до попереднього результату можна було повернутися одним кліком.

Як саме відбувається вибір? Коли ви натискаєте «Згенерувати», сторінка запитує у браузера випадкові значення через crypto.getRandomValues і використовує їх для вибору позицій у вашому списку, замість того, щоб покладатися на псевдовипадкову функцію JavaScript, таку як Math.random(). Перетворення сирого 32-бітного значення на позицію — це саме те місце, де генератори непомітно помиляються: обчислення остачі від ділення значення на довжину списку (модуль) є очевидним і водночас упередженим підходом, оскільки, якщо довжина не ділить 2^32 без остачі, елементи на початку списку випадатимуть трохи частіше за інші. Ця вада називається modulo bias (спотворення за модулем), і вона є цілком вимірною, а не просто теоретичною. Натомість цей інструмент відкидає будь-яке значення, що виходить за межі найбільшого точного кратного довжині списку, і тягне жереб знову — метод, що має назву rejection sampling (вибірка з відхиленням). Це коштує кількох додаткових циклів, але гарантує точну надійність замість приблизної. Позиція у списку нічого не змінює: перший і останній елементи мають абсолютно однакову ймовірність під час кожного розіграшу.

Перемикач «Без повторень» розділяє два принципово різні види жеребкування, і статистика має для кожного з них окрему назву. Коли він увімкнений, інструмент тасує копію вашого списку за допомогою алгоритму Fisher-Yates і забирає елементи зверху — це те саме, що тягнути квитки з капелюха і не класти їх назад, тож жоден запис не обирається двічі, і будь-яка група такого розміру є однаково ймовірною. Це вибірка без повернення (sampling without replacement), і саме вона потрібна для визначення переможців, поділу на команди та встановлення черговості. Коли перемикач вимкнено, кожен вибір здійснюється незалежно з усього списку, тому той самий запис може випасти більше одного разу — це вибірка з поверненням (sampling with replacement), яка застосовується тоді, коли всі залишаються у грі в кожному раунді, як-от під час повторних розіграшів або швидкої статистичної вибірки. Жоден з режимів не є більш справедливим за інший; вони просто вирішують різні завдання.

Справедливе жеребкування взагалі не повинно виглядати справедливо. Витягніть п'ять імен з десяти, і ви регулярно бачитимете два результати, що стояли поруч у початковому списку, або одне й те саме ім'я двічі поспіль, щойно дозволите повторення — і кожен такий випадок є абсолютно нормальним. Коли режим «Без повторень» вимкнено, кожен вибір є незалежним: попередні вибори не мають жодного впливу на наступні, і жоден елемент ніколи не стає «черговим» претендентом на виграш. Інстинкт, який переконує нас у зворотному, — це помилка гравця (gambler's fallacy), і саме через нього ми самі дуже погано робимо випадковий вибір. Якщо попросити людину обирати навмання, ми уникаємо першого й останнього елементів, намагаємося не повторювати імена і розподіляємо свій вибір значно рівномірніше, ніж це будь-коли робить справжня випадковість. Підозріло охайний результат з більшою ймовірністю вигаданий людиною, ніж отриманий випадково; випадкові вибори утворюють скупчення.

Чому варто обрати цей інструмент випадкового вибору?

Випадковий вибір стає у пригоді всюди, де рішення має витримати будь-які сумніви. Вчителі в Україні викликають учнів до дошки без улюбленців і справедливо ділять клас на проектні групи. Стримери та маркетологи розігрують призи перед аудиторією, яка повинна вірити результату. Менеджери роздають завдання, за які ніхто не береться добровільно, а команди визначають черговість презентацій чи чергувань. Дослідники витягують випадкову вибірку записів для аудиту. Родини припиняють суперечки про те, що подивитися, а голодна компанія обирає ресторан. Спільною рисою є вибір, який згодом зможе пояснити будь-хто: розіграш використовує криптографічну випадковість, відбувається виключно на вашому пристрої, а «Історія» зберігає результат на потім — хоча для публічного розіграшу збережіть список учасників і результат до оголошення, адже історія браузера — це зручність, а не доказ.

У цього інструмента є кілька об'єктивних обмежень, про які варто знати. Він не може витягнути більше унікальних записів, ніж містить ваш список — для трьох переможців потрібно принаймні три імена — і зупиняється на 1000 елементах по 200 символів кожен, дозволяючи щонайбільше 100 результатів за один розіграш. Кнопки «Перемішати» та «Сортувати» працюють порядково, тому список через кому, вставлений одним рядком, буде перетасовано лише тоді, коли кожен елемент опиниться на новому рядку; крім того, обидві ці функції змінюють лише саме поле, а не розіграш, який залишається однаково об'єктивним незалежно від порядку записів. Кожен елемент також зумисно має абсолютно однакову вагу, тому жеребкування, де одне ім'я має рахуватися за два, вимагає, щоб це ім'я було вказане у списку двічі. У цих межах гарантія є максимально чіткою: під час кожного вибору кожен запис, який усе ще бере участь у жеребкуванні, має абсолютно однакові шанси.

FAQ

Як випадковим чином вибрати ім'я зі списку?

Вставте імена в поле «Елементи» — по одному на рядок або через кому (для списку через пробіл у полі «Роздільник» виберіть «Пробіл») — залиште «Кількість» на 1 і натисніть «Згенерувати». Одразу ж буде обрано одне ім'я. Щоб витягнути кілька імен одночасно, збільште «Кількість» до потрібного вам числа.

Чи дійсно цей вибір є об'єктивним і чесним?

Так. Кожен вибір використовує Web Crypto API (crypto.getRandomValues) вашого браузера разом з rejection sampling, що усуває modulo bias, притаманний наївним реалізаціям. Кожен запис має строго однакову ймовірність незалежно від його позиції у списку, а для вибору кількох різних елементів використовується тасування Fisher-Yates, тому будь-яка група такого розміру має також однакові шанси.

Чи завантажується мій список на ваш сервер?

Ні. Усе жеребкування проходить локально у вашому браузері: текст, результати та історія ніколи не залишають ваш пристрій, тому вставлені вами імена або електронні адреси ніколи не надсилаються нам. Кнопка «Завантажити з файлу» також є повністю локальною — ваш браузер сам читає файл, і нічого нікуди не завантажується.

Чи можу я вставити список через кому або пробіл замість одного елемента на рядок?

Так. Опція «Роздільник» за замовчуванням встановлена на «Автоматично», що дозволяє системі самостійно відрізняти перенесення рядків від ком, завдяки чому дані, скопійовані з таблиці, повідомлення або документа, працюють без жодних змін. Список через пробіл потребує одного додаткового кроку — змініть «Роздільник» на «Пробіл» — оскільки такі записи, як повні імена, самі містять пробіли і ніколи не розділяються за ними автоматично. Фіксуйте «Роздільник» на варіантах «Новий рядок» або «Кома» лише тоді, коли у ваших даних формати змішані.

Що робить перемикач «Без повторень»?

Якщо опція «Без повторень» увімкнена, кожен вибраний елемент буде унікальним — неначе ви тягнете квитки з капелюха і не повертаєте їх назад, що ідеально підходить для визначення переможців або поділу на команди. Якщо її вимкнути, той самий запис може випасти більше одного разу, що статистики називають вибіркою з поверненням.

Чому опції «Без повторень» та «Формат результату» неактивні?

Тому що обидві застосовуються лише тоді, коли ви обираєте більше одного запису, як і вказано у підказці біля них: «Діє, коли кількість становить 2 або більше». Збільште значення «Кількість» до 2 або вище, і обидві стануть доступними; при кількості 1 немає чого повторювати і немає чого розділяти.

Для чого потрібна опція «Формат результату»?

Вона визначає, як відображатимуться та копіюватимуться декілька результатів: «По одному на рядок», «Через пробіл» для швидкого надсилання у чаті, або «Через кому» для вставки в таблицю чи скрипт. Вона стає доступною, щойно «Кількість» сягає 2 або більше.

Що роблять кнопки «Перемішати» та «Сортувати»?

Функція «Перемішати» змінює порядок записів усередині поля «Елементи», а «Сортувати» вишиковує їх за алфавітом із природним порядком для чисел — повторне натискання повертає порядок назад. Обидві кнопки змінюють лише те, як записаний ваш список, а не те, як працює жеребкування: цей інструмент однаково справедливий незалежно від того, в якому порядку знаходяться записи.

Скільки записів може містити список і скільки можна вибрати за один раз?

Список розрахований на 2 до 1000 елементів по 200 символів кожен, а один розіграш повертає до 100 результатів. Порожні рядки та зайві пробіли по краях ігноруються, тому список, вставлений з таблиці чи документа, працює без переформатування.

Чи підходить цей інструмент для розіграшів призів та конкурсів?

Так, і це одне з найпоширеніших застосувань. Вставте список учасників, встановіть «Кількість» відповідно до числа призів, залиште увімкненим режим «Без повторень», щоб жоден запис не випав двічі — і спершу перевірте, чи ніхто не вказаний двічі — а потім натисніть «Згенерувати». Оскільки жеребкування використовує криптографічно надійну випадковість і працює виключно на вашому пристрої, процес легко пояснити. Також збережіть список учасників і результат: «Історія» допомагає знайти вибір знову, але вона не є доказом.

Чи можу я використати його для поділу людей на команди?

Так. Встановіть «Кількість» рівною розміру першої команди та натисніть «Згенерувати» — вибрані імена і є першою командою. Видаліть їх зі списку і повторіть процес для наступної команди. Тримайте опцію «Без повторень» увімкненою, щоб ніхто не опинився у двох командах водночас.

Чому те саме ім'я випало двічі поспіль?

Тому що незалежні витягування допускають повторення, і саме так виглядає справжня випадковість. Кожне витягування повністю ігнорує всі попередні, тому в списку з десяти імен поява тієї самої людини двічі поспіль щоразу має шанс 1 до 10 — це звичайне явище, а не збій. Увімкніть режим «Без повторень», якщо вам потрібно, щоб усі виділені елементи в межах одного розіграшу були різними.

Чи запам'ятовує інструмент мої вибори, і чи є він безкоштовним?

Ваша «Історія» зберігає останні 10 розіграшів безпосередньо у вашому власному браузері, тож ви можете відновити, скопіювати або видалити попередній результат, а також повністю очистити весь список, коли забажаєте. Інструмент є повністю безкоштовним, не вимагає реєстрації, і оскільки ваш список і вибрані варіанти ніколи не надсилаються на наш сервер, ми ніколи не бачимо й не зберігаємо їх. Аналітика, якщо ви її дозволяєте, фіксує лише факт використання інструмента — і ніколи сам список.