Skip to main content
CheckTown
Генератори

Генератор випадкових чисел: Справді неупереджені числа онлайн

Опубліковано 5 хв читання
У цій статті

Що таке генерація випадкових чисел?

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

Справжні генератори випадкових чисел (TRNG) збирають entropy з фізичних явищ: рух миші, час натискань клавіш, час надходження мережевих пакетів або спеціалізовані апаратні датчики. Псевдовипадкові генератори чисел (PRNG) використовують математичні алгоритми, ініціалізовані entropy, для отримання послідовностей, що виглядають випадково.

Як генеруються випадкові числа

CheckTown використовує криптографічно захищений генератор випадкових чисел браузера.

  • Джерело entropy — використовує window.crypto.getRandomValues(), що звертається до entropy на рівні операційної системи
  • Відображення діапазону — перетворює сирі випадкові значення у ваш заданий діапазон min/max без зміщення
  • Пакетна генерація — генеруйте кілька чисел одночасно для списків, масивів або масових потреб

Спробуйте безкоштовно — реєстрація не потрібна

Згенерувати випадкові числа →

Коли використовувати генератор випадкових чисел

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

  • Тестування — генеруйте випадкові тестові дані для заповнення фікстур або ініціалізації тестових баз даних
  • Вибірка — відбирайте випадкові зразки з наборів даних для статистичного аналізу або призначення A/B-тестів
  • Ігри та симуляції — генеруйте непередбачувані вхідні дані для симуляцій, ігор або лотерей

Часті запитання

У чому різниця між Math.random() і crypto.getRandomValues()?

Math.random() використовує швидкий PRNG, ініціалізований при запуску. Він підходить для симуляцій та ігор, але не для безпеки. crypto.getRandomValues() використовує CSPRNG операційної системи (криптографічно захищений PRNG), придатний для генерації токенів, ключів та інших чутливих до безпеки значень. Завжди використовуйте crypto.getRandomValues() для задач безпеки.

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

Так, але лише якщо вони згенеровані за допомогою CSPRNG. Випадкові числа з Math.random() або подібних некриптографічних PRNG є передбачуваними, якщо відомий початковий стан і достатньо зразків виводу. Криптографічні ключі, токени, солі та nonce мають генеруватися з криптографічно захищеною випадковістю.

Що таке зміщення залишку і як воно впливає на діапазони випадкових чисел?

Зміщення залишку виникає при відображенні випадкового значення на діапазон за допомогою оператора %. Якщо простір випадкових значень не ділиться рівномірно на розмір діапазону, деякі значення з'являються частіше за інші. Наприклад, відображення 0–255 на 0–9 за допомогою % 10 призводить до того, що 0–5 з'являються трохи частіше. CheckTown використовує метод відхилення вибірок, щоб усунути зміщення.

Пов'язані інструменти