🔧Toolify

Генератор случайных чисел (криптографически защищённый, режим

Задайте минимум, максимум и количество чисел для генерации криптографически защищённых случайных целых чисел. Включите режим «уникальные» для выборки без замены (розыгрыши, лотереи).

Задайте диапазон и нажмите «Сгенерировать» для получения случайных чисел.

Как это работает

Почему это действительно случайно

Используется crypto.getRandomValues — криптографически защищённый источник случайных чисел браузера — вместо Math.random(). Вывод CSPRNG невозможно предсказать по предыдущим значениям, что важно для лотерей, игровых приложений и любых случаев, где «случайность» — реальное требование, а не просто «произвольность».

Также применяется метод отбора с отклонением (rejection sampling) для обеспечения строго равномерного распределения по выбранному диапазону. Наивный подход «случайное % диапазон» создаёт смещение, когда диапазон не делится нацело на 2³². Rejection sampling отбрасывает значения, способные вызвать смещение, и повторяет попытку — так каждое число в диапазоне имеет ровно одинаковую вероятность.

Режим уникальных и режим с повторениями

По умолчанию: каждое число независимо — повторения возможны. Это то, что обычно подразумевают под «случайным» в обычном использовании (бросок кубика, выбор фильма, случайное тестирование).

Режим уникальных: выборка без замены — однажды выбранное число не может быть выбрано снова в том же наборе. Применяется для: лотерейных чисел (например, 6 чисел из 1-49), розыгрышей (определение победителей), распределения по командам, любых задач «выбрать N из M». Требуется: количество ≤ диапазон.

Типичные сценарии использования

Лотерея / розыгрыш: 6 уникальных чисел из 1-49 или любой другой выборке. Включите режим «уникальные».

Бросок кубика: диапазон 1-6 (или 1-20 для D20). Оставьте режим «уникальные» выключенным, чтобы каждый бросок был независимым.

Случайная выборка для тестирования: выберите 10 случайных ID пользователей из 1-10000 для проверки. Используйте «уникальные», чтобы избежать дублирования.

Симуляция подбрасывания монеты: диапазон 0-1, много результатов. Подсчитайте орлов и решек для проверки честности (при большой выборке увидите ~50/50).

Частые вопросы

Подходит ли это для честных розыгрышей и лотерей?

Случайность криптографически защищена и несмещённа. Является ли это юридически «честным» для официальной лотереи — зависит от законодательства: многие требуют сертифицированных аппаратных генераторов случайных чисел.

В чём отличие от Math.random()?

Math.random() использует алгоритм, вывод которого злоумышленник может предсказать по предыдущим результатам. crypto.getRandomValues использует криптографический генератор уровня ОС, который нельзя предсказать. Для реальной честности используйте этот инструмент.

Можно ли получить отрицательные числа?

Да. Задайте минимум как отрицательное значение.

Каков максимальный диапазон?

Ограничен безопасным диапазоном целых чисел JavaScript (~2⁵³), но практически можно работать с миллиардами без проблем. Метод rejection sampling корректно обрабатывает любой диапазон.

Почему «уникальные» не работают, когда количество больше диапазона?

Если выбрать 10 уникальных чисел из 1-5, четыре просто не существуют. Валидация фиксирует это и просит расширить диапазон или уменьшить количество.

Работает ли это для бросков кубика?

Да — задайте диапазон 1-6 (или любой другой) и выключите «уникальные», чтобы каждый бросок был независимым.

Можно ли сохранить зерно и воспроизвести результат?

Нет — защищённый генератор по определению не имеет зерна. Если нужна воспроизводимая «случайность» для тестирования, используйте библиотеку PRNG с зерном.

Данные куда-то отправляются?

Нет. Генерация полностью локальная.

Похожие инструменты

Обновлено:

Попробуйте наши ИИ-промпты →