Потрібен швидкий і чесний спосіб отримати випадкове число? Цей безкоштовний онлайн-генератор випадкових чисел генерує число – або цілий список чисел – у будь-якому діапазоні, який ви оберете: від простого діапазону від 1 до 10 до найширшого від −1 000 000 000 000 до 1 000 000 000 000 — лише цілі числа, включно з нулем та від'ємними. Вкажіть мінімальне та максимальне значення в полях «Мін» і «Макс», оберіть, скільки чисел потрібно, у полі «Кількість», і натисніть «Згенерувати». Обидві межі входять до діапазону: діапазон від 1 до 10 може повернути як 1, так і 10.
Кожен результат генерується прямо у вашому браузері за допомогою Web Crypto API (crypto.getRandomValues) – що надає криптографічно надійні випадкові значення від джерела випадковості, наданого операційною системою. Ваші числа ніколи не надсилаються на наш сервер, тому ми ніколи їх не бачимо й не записуємо. Генерація миттєва, приватна і продовжує працювати навіть на повільному з'єднанні, щойно сторінка завантажилася.
Опції враховують реальні сценарії, у яких потрібні випадкові числа. Увімкніть «Без повторень», щоб жодне число не повторювалося – саме це потрібно для розіграшів, лотерейних тиражів або поділу людей на групи без повторів. Потрібно обрати 20 переможців із 500 учасників? Встановіть «Мін» на 1, а «Макс» на 500, увімкніть «Без повторень», задайте «Кількість» 20 і натисніть «Згенерувати». «Порядок сортування» упорядковує результат за зростанням або спаданням, а одна кнопка копіює весь список. Перемкнувши «Формат результату» з «Новий рядок» на «Через пробіл» або «Через кому», стане доступним поле «Кількість наборів»: кілька незалежних генерацій за раз – наприклад, двадцять наборів по 3 числа для двадцяти раундів розіграшу – а «Дозволити повтори між наборами» визначає, чи може те саме число з'явитися більш ніж в одному наборі.
Як насправді генерується випадковість? Випадковість у браузері походить із криптографічно надійного генератора вашої операційної системи, а не з самого JavaScript. Коли ви натискаєте «Згенерувати», JavaScript сторінки запитує в браузера сирі 32-бітні значення через crypto.getRandomValues і переносить їх у заданий вами діапазон. Тут немає seed (початкового значення), яке можна вгадати, немає алгоритмічного скорочення, яке можна відтворити, а самі числа ніколи не передаються мережею.
Перетворення сирого значення на ваш діапазон – це те місце, де генератори тихо помиляються, і воно заслуговує на окремий абзац. Брати значення за модулем розміру діапазону – очевидний, але й упереджений підхід: якщо діапазон не ділить 2^32 рівно, найменші числа випадають трохи частіше за інші. Ця вада називається modulo bias (упередженість модуля), і вона вимірювана, а не теоретична. Натомість цей генератор відкидає будь-яке значення понад найбільше значення, кратне розміру діапазону і генерує знову – техніка, яка називається rejection sampling (вибіркою з відбраковуванням). Це коштує кількох додаткових спроб, але натомість дає точну гарантію: кожне число між «Мін» і «Макс» має рівно однакову ймовірність, а не приблизно однакову.
Що робить число справді випадковим? Число достатньо випадкове, коли попередні результати нічого не кажуть про наступне – і на практиці тут є три рівні. Звичайна псевдовипадкова функція, як-от Math.random(), виконує детермінований алгоритм: будь-хто, хто знає її внутрішній стан, може відтворити всю послідовність – це годиться для перемішування слайдшоу і не годиться там, де результат не повинен бути передбачуваним. Криптографічно надійний генератор – рівень, який використовує цей інструмент, – теж алгоритм, але він побудований на надійному системному джерелі випадковості й так, що спостереження за його виводом нічого не каже про наступне значення. Фізичні джерела, як-от атмосферний шум чи радіоактивний розпад, є радше іншим видом випадковості, аніж сильнішим: для вибору числа з діапазону криптографічно безпечний генератор на практиці є так само непередбачуваним. Саме тому браузери пропонують окреме crypto API замість того, щоб покращувати Math.random(): вони вирішують різні задачі, і лише один із них безпечний, коли результат для когось справді важливий.
Справді випадкова послідовність не зобов'язана виглядати випадковою для людини. Виберіть десять чисел від 1 до 10 – і ви регулярно побачите повтор, майже пару на кшталт 7, 7, 8, або коротку серію, яка тримається вгорі – і кожен із цих випадків абсолютно нормальний. Випадковість вирівнюється лише на великій кількості генерацій і ніколи — на кількох: якщо повтори дозволені, кожна генерація незалежна, попередні числа жодним чином не впливають на наступні, і жодне число ніколи не «мусить» випасти. Інстинкт, який стверджує протилежне, – це помилка азартного гравця, і саме цей інстинкт робить самих людей поганими генераторами випадкових чисел – коли нас просять вигадати випадкову послідовність, ми уникаємо повторів і розподіляємо значення набагато рівномірніше, ніж це коли-небудь робить випадковість. Результат, який виглядає підозріло охайним, з більшою ймовірністю вигаданий людиною, ніж отриманий випадково; випадкові генерації утворюють скупчення.
Чому варто обрати цей генератор випадкових чисел?
- Генерація лише в браузері: числа генеруються на вашому пристрої й ніколи не надсилаються на наш сервер
- Випадковість Web Crypto API: криптографічно надійна, а не Math.random()
- Без modulo bias: rejection sampling тримає кожне число в діапазоні однаково ймовірним
- Широкі діапазони: будь-які цілі числа від −1 000 000 000 000 до 1 000 000 000 000, обидві межі включені
- Режим «Без повторень»: список без повторів для розіграшів і поділу на групи
- Кілька наборів: кілька незалежних генерацій за один клік
- Сортування та формати виводу: за зростанням чи спаданням, новий рядок, пробіли чи коми
- Історія та збереження у файл: зберігайте копію кожної генерації
- Необмежено і безкоштовно: без реєстрації, без обмежень на використання, нічого на наших серверах
Випадкові числа використовують в Україні у значно більшій кількості ситуацій, ніж здається. Вчителі випадково обирають учнів, не віддаючи переваги нікому. Стримери та маркетингові команди проводять розіграші подарунків і призів перед аудиторією, яка має вірити результату. У настільних іграх випадкове число замінює загублений кубик або визначає, хто ходить першим, а ліги встановлюють порядок драфту. Дослідницькі команди обирають випадкову вибірку, щоб їхні висновки поширювалися не лише на тих, хто зголосився. Команди розробників генерують тестові дані, ініціалізують симуляції та обирають ідентифікатори під час QA. Спільний знаменник тут один – справедливість, яку можна пояснити згодом: генерація використовує криптографічну випадковість і відбувається повністю на вашому пристрої. Самого лише випадкового числа, однак, недостатньо для підтвердження чесності конкурсу: для цього також потрібні правила та зафіксований перед розіграшем список учасників, а також один розіграш замість вибору найкращого з кількох.
Цей генератор випадкових чисел має кілька чесних обмежень, про які варто знати. Режим «Без повторень» не може згенерувати більше чисел, ніж міститься в діапазоні: двадцяти унікальних значень між 1 і 10 просто не існує. Якщо дозволені повтори, кожна генерація незалежна, і попередні результати не впливають на наступні, тож оновлення сторінки не скидає жоден цикл – адже такого циклу просто не існує. І хоча числа криптографічно надійні, генерація тут – це чесний випадковий вибір, а не передбачення: офіційні тиражі лотереї проводяться на власному фізичному або сертифікованому обладнанні, і те, що обчислюється у вашому браузері, не має з ними жодного зв'язку. У межах цих обмежень гарантія залишається надійною: під час кожної генерації кожне число, що все ще доступне у вашому діапазоні, має абсолютно однакові шанси.