Криптографически случайные числа в заданном диапазоне — целые или дробные, с повторами или без. Для розыгрышей, лотерей, тестовых данных и статистических выборок. Всё считается локально в браузере.
Случайное число кажется простой вещью, но качество случайности критично в задачах, где результат должен быть честным и непредсказуемым. Самый частый сценарий — розыгрыши и конкурсы: выбрать победителя из 200 участников, определить порядок призов, провести жеребьёвку. Если случайность предсказуема, организатор может (намеренно или случайно) исказить результат.
Другие применения: A/B-тесты (распределение пользователей по группам), выборки из базы данных (SELECT ... LIMIT 1 OFFSET случайное), генерация тестовых данных для нагрузочных тестов, статистические симуляции методом Монте-Карло, случайные задержки в антибот-логике, выбор случайного вопроса из банка.
Большинство онлайн-генераторов используют Math.random() — это быстрый, но не криптографический генератор. Его внутреннее состояние можно восстановить, наблюдая последовательность, а значит, предсказать следующие значения. Для розыгрыша с призами это уязвимость: технически подкованный участник может вычислить, когда выпадет выигрышное число.
PassMakers использует crypto.getRandomValues — криптографически стойкий генератор, встроенный в браузер. Его выход непредсказуем даже при полном знании предыдущих значений. Для честного розыгрыша это принципиально. Дополнительно мы применяем отвержение смещения (rejection sampling), чтобы числа были распределены строго равномерно, без перекоса в сторону меньших значений.
Опция «Без повторов» нужна везде, где одно и то же значение не может встретиться дважды. Классический пример — розыгрыш нескольких призов: один участник не должен выиграть дважды. Также: выбор N разных строк из таблицы БД, формирование случайной перестановки, жеребьёвка турнирной сетки, раздача номеров.
Генератор автоматически проверяет, что диапазон вмещает запрошенное количество уникальных значений. Если вы просите 100 уникальных чисел из диапазона 1–50, физически выдать их невозможно — в этом случае включите повторы или расширьте диапазон.
Целые числа нужны в подавляющем большинстве задач: номера участников, индексы, количества. Дробные числа с настраиваемым числом знаков после запятой полезны для симуляций, генерации тестовых цен, координат, процентных значений и научных расчётов. Помните, что дробное представление имеет ограниченную точность — для финансовых расчётов с копейками используйте 2 знака.
Все числа генерируются прямо в вашем браузере. Ни диапазон, ни результаты, ни сам факт обращения не передаются на сервер. Это важно для розыгрышей: вы можете провести жеребьёвку публично, показав экран, и любой наблюдатель убедится, что результат не был подготовлен заранее.