Я буду вдячний, якщо ви поділитеся цими сторінками з друзями, збережете їх у закладках або посилання на них. Дякую! 🙏

Генератор випадкових чисел онлайн

Acrafto Team Математика
Оновлено
Швидкі набори
Усе працює у вашому браузері. Жодне число не залишає ваш пристрій.

Як працює генератор випадкових чисел?

Генератор пропонує два джерела випадковості, і ви обираєте те, що підходить під завдання.

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

Посів (seed) перетворює будь-який введений вами текст на початковий стан детермінованого генератора (xoshiro128**). Той самий посів завжди дає ті самі числа, тож будь-хто може відтворити ваше жеребкування й перевірити, що результат саме такий, як заявлено.

Обидва режими працюють повністю у вашому браузері. Жодне число ніколи не потрапляє на сервер.

Без модульного зміщення

Більшість простих генераторів відображають випадкове 32-бітне значення на ваш діапазон через value % range. Коли діапазон не ділить 2³² рівно, найменші числа випадають трохи частіше за інші. На тисячах жеребкувань це стає помітним.

Цей генератор натомість використовує вибіркове відсіювання (rejection sampling): значення, що потрапили б у нерівний “хвіст”, відкидаються і генеруються заново. Кожне число у вашому діапазоні має точно однакові шанси. Перевірити це можна вбудованим тестом на рівномірність.

Що вміє генератор

Діапазон

  • Мінімум і максимум — будь-який цілий або десятковий діапазон, включно з від’ємними значеннями
  • Кількість чисел — від 1 до 1 000 000 за одне жеребкування
  • Без повторень — кожне число з’являється щонайбільше один раз, як у справжньому жеребкуванні
  • Сортування — порядок жеребкування, за зростанням або за спаданням; сортування ніяк не впливає на випадковість
  • Крок — обмежити результати кратними значенню, щоб випадали лише 0, 5, 10, 15
  • Виключення чисел — список значень, які ніколи не мають випасти

Режим

  • Джерело випадковості — безпечне (Web Crypto) або з посівом (відтворюване)
  • Посів — будь-який текст; той самий посів завжди відтворює те саме жеребкування
  • Розподіл — рівномірний, нормальний (Гаусів), експоненційний, Пуассона, трикутний, біноміальний
  • Ваги — надати обраним числам вищу ймовірність, записується як number:weight
  • Кубикова нотація3d6+2, d20, 2d20kh1 для переваги (advantage), 4d6dl1 для генерації характеристик персонажа

Виведення

  • Роздільник — кома, пробіл, крапка з комою, табуляція, новий рядок або будь-що на ваш вибір
  • Система числення — десяткова, двійкова, вісімкова, шістнадцяткова або основа 36
  • Доповнення нулями — перетворити 7 на 007 для квитків або ID-номерів
  • Префікс і суфікс — обгорнути кожне число фіксованим текстом
  • Шаблон{n} це число, {i} його позиція, тож user{n} стає user42
  • Копіювати як — звичайний текст, CSV, JSON або таблицю Markdown

Статистика

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

Історія

Останні 50 жеребкувань зберігаються у вашому браузері разом із налаштуваннями, що їх створили — одним кліком можна відновити будь-яке з них. Часто вживані конфігурації можна зберегти як іменовані пресети, а весь набір експортувати у файл JSON для перенесення на інший пристрій. Ніщо не зберігається ніде, крім цього браузера.

Клавіатура

Натисніть Пробіл або R, щоб згенерувати ще раз, не сягаючи по мишу.

Швидкі пресети

ПресетДіапазонКількістьВикористання
🎲 Кубик1–61Настільні ігри, прийняття рішень
🪙 Монета0–11Орел чи решка
🎰 Лотерея1–496Унікальні, відсортовані, як у справжньому жеребкуванні
💯 1–1001–1001Відсотки, A/B розподіл
🔢 PIN0–94Чотири цифри, повторення дозволені

Відтворювані жеребкування

Режим із посівом існує для моментів, коли “повірте, це було випадково” недостатньо.

Оберіть посів, з яким усі погодяться заздалегідь — дату, хештег, курс закриття чогось публічного — і оголосіть його перед жеребкуванням. Тоді будь-хто може ввести той самий посів із тими самими налаштуваннями й отримати ідентичний результат. Ви не довели, що числа були непередбачуваними; ви довели, що не перегенеровували, поки не сподобалась відповідь.

Так само можна зробити випадковість відтворюваною в роботі, яку потрібно перевіряти: план вибірки, який колега може повторити, набір тестових фікстур, що лишається стабільним у наборі тестів, шкільна вправа, де кожен учень отримує однакові “випадкові” дані.

Вибір розподілу

Рівномірний дає кожному числу в діапазоні однакові шанси. Це те, що зазвичай мають на увазі під випадковістю, і це значення за замовчуванням.

Інші розподіли групують результати навколо певного значення, як це зазвичай роблять реальні величини:

  • Нормальний (Гаусів) — зріст, похибки вимірювань, результати тестів. Задайте середнє й стандартне відхилення.
  • Експоненційний — час очікування між незалежними подіями.
  • Пуассона — кількість подій за фіксований інтервал: прибуття за годину, дефекти на партію.
  • Трикутний — коли відомі мінімум, максимум і найбільш імовірне значення, але нічого більше. Часто застосовується в оцінках проєктів.
  • Біноміальний — кількість успіхів із фіксованої кількості випробувань за фіксованої ймовірності.

Кожен розподіл обрізається до заданого вами діапазону, тож довгий хвіст Гаусового розподілу не вийде за межі мінімуму й максимуму.

Де застосовуються випадкові числа

Ігри та розваги

  • Настільні ігри — кидки кубиків, черговість ходів
  • Настільні RPG4d6dl1 для характеристик персонажа, 2d20kh1 для переваги (advantage)
  • Розіграші — вибір переможця з посівом, щоб учасники могли перевірити результат
  • Вікторини — випадковий порядок питань

Статистика та наука

  • Вибірка — вибір зразка з популяції без повторень
  • A/B тестування — розподіл учасників на групи
  • Симуляція Монте-Карло — оцінка ймовірності через повторення
  • Бутстрепінг — ресемплінг для оцінки невизначеності

Розробка

  • Тестові дані — мільйон значень, згенерованих у фоні, тож сторінка лишається чутливою
  • Фікстури — з посівом, тож тест, що падає, падає однаково двічі
  • Випадкові ID — з доповненням, префіксами або шаблоном
  • Навантажувальне тестування — шаблонні ідентифікатори на кшталт user{n}@example.com

Справжні vs. псевдовипадкові числа

Math.random()crypto.getRandomValues()З посівом (xoshiro128**)
ТипПсевдовипадковіКриптографічно захищеніПсевдовипадкові, детерміновані
Джерело ентропіїЗерно, обране рушіємСистемний CSPRNGВаш текст-посів
Передбачувані?Потенційно такНіТак, за задумом
Відтворювані?НіНіЗавжди
Придатні для безпекиНіТакНі
Придатні для статистикиЗалежитьТакТак
Придатні для перевіреного жеребкуванняНіНіТак

Math.random() у цьому інструменті не використовується жодним чином.

Жеребкування без повторень

При увімкненій опції Без повторень кожне число в діапазоні з’являється щонайбільше один раз. Ідеально для:

  • Розіграшів — ніхто не може виграти двічі
  • Перестановок — перемішування набору елементів
  • Бінго — виклик чисел, які лишаються викликаними
  • Лотереї — шість різних чисел від 1 до 49

Жеребкування використовує частковий Fisher–Yates shuffle, тож запит на 6 чисел з мільйона такий же швидкий, як запит на 6 з 49 — воно ніколи не крутиться в надії уникнути колізії. Якщо ви запросите більше унікальних чисел, ніж може дати діапазон, генератор про це повідомить замість того, щоб зависнути.

Експорт результатів

Скопіюйте числа як звичайний текст із будь-яким роздільником, як CSV для таблиці, як JSON для коду або як таблицю Markdown для документації. Дуже великі жеребкування повністю зберігаються в пам’яті й повністю копіюються, навіть якщо на екрані згенеровано лише перші кілька тисяч.

Генерація випадкових чисел у власному коді

JavaScript / TypeScript

// Cryptographically secure integer in [min, max], without modulo bias.
// The naive `value % range` favours low numbers when range does not
// divide 2**32 evenly - so we reject values in the uneven tail.
function randomInt(min, max) {
  const range = max - min + 1;
  const limit = Math.floor(0x100000000 / range) * range;
  const arr = new Uint32Array(1);
  let value;
  do {
    crypto.getRandomValues(arr);
    value = arr[0];
  } while (value >= limit);
  return min + (value % range);
}

Python

import random
import secrets

# Cryptographically secure, no modulo bias
n = secrets.randbelow(max - min + 1) + min

# Reproducible: the same seed always gives the same sequence
rng = random.Random('my-seed')
n = rng.randint(min, max)

# Without repetition
sample = random.sample(range(min, max + 1), count)

PHP

// Cryptographically secure (PHP 7+), no modulo bias
$n = random_int($min, $max);

// Reproducible
mt_srand(crc32('my-seed'));
$n = mt_rand($min, $max);

Часті запитання (FAQ)

Чи результат справді випадковий? У безпечному режимі — так. Він походить з crypto.getRandomValues(), криптографічно захищеного генератора, живленого пулом ентропії вашої операційної системи. Результати рівномірно розподілені й непередбачувані. Режим з посівом навмисно протилежний: він відтворюваний, і саме в цьому його сенс.
Скільки чисел можна згенерувати одночасно? До 1 000 000. Жеребкування понад 50 000 обчислюються у фоновому воркері, тож сторінка лишається чутливою, а на екрані показуються перші 2000 із кількістю решти — копіювання все одно дає вам усе.
Чи можу я генерувати від'ємні числа? Так. Встановіть від'ємний мінімум. Працює весь діапазон чисел JavaScript, включно з від'ємними діапазонами з обох боків.
Чи впливає сортування на випадковість? Ні. Числа спочатку генеруються, а потім сортуються. Сортування змінює лише порядок, у якому ви їх бачите.
Чи дасть той самий посів ті самі числа завтра? Так, і на будь-якому іншому пристрої чи в іншому браузері. Генератор з посівом повністю детермінований і залежить лише від вашого посіву та налаштувань.
Що показує тест на рівномірність? Він виконує хі-квадрат тест, порівнюючи, як часто кожне число насправді випадало, з тим, як часто воно мало б випадати. Якщо статистика лишається нижчою за критичне значення, результати узгоджуються з рівномірним розподілом. Для змістовного результату потрібен достатньо вузький діапазон і достатньо жеребкувань — щонайменше п'ять на кожне можливе значення.
Як працюють ваги? Запишіть їх як пари number:weight, наприклад 1:5, 2:1, 3:1. Тут 1 у п'ять разів імовірніше, ніж 2 або 3. Числа, які ви не вказали, отримують вагу нуль і ніколи не випадають.
Яка кубикова нотація підтримується? 3d6 кидає три шестигранні кубики. Додайте модифікатор через 3d6+2. Залишайте чи відкидайте кубики за допомогою kh, kl, dh, dl — так, 2d20kh1 залишає найвищий результат із двох d20 (advantage), а 4d6dl1 відкидає найнижчий результат із чотирьох d6.
Чи зберігається моя історія десь ще? Лише у цьому браузері, у локальному сховищі. Вона ніколи не потрапляє на сервер, не синхронізується з іншим пристроєм і зникає, якщо ви очистите дані сайту. Експортуйте її в JSON, якщо хочете зберегти або перенести.