Генератор случайных чисел
До 1000 чисел за раз, любой диапазон, режим без повторов и сортировка. Тот же криптографический источник случайности, что и у паролей.
—
Где пригодится
Зачем нужны случайные числа
Розыгрыши и конкурсы. Участники пронумерованы — комментарии под постом, заявки в таблице, номера билетов. Задаёте диапазон, получаете победителя. Если результат нужно показать посторонним, есть розыгрыш по номерам с постоянной ссылкой.
Жеребьёвка и очередь. Кто выступает первым, кому какой вариант задания, в каком порядке идут доклады. Режим без повторов выдаёт перестановку, а не набор с дублями.
Лотерейные комбинации. Готовые кнопки на 4 из 20, 5 из 36, 6 из 45 и 7 из 49 — это те же числа без повторов, отсортированные по возрастанию.
Тесты и учёба. Выборка строк из таблицы для ручной проверки, случайные примеры для задачника, подбрасывание монетки и кубика без монетки и кубика.
Про случайность
Почему не Math.random()
Встроенный Math.random() оптимизирован под скорость, а не под непредсказуемость: его состояние можно восстановить по нескольким значениям. Для розыгрыша, где на кону приз, этого достаточно, чтобы результат перестал быть честным.
Мы берём числа из crypto.getRandomValues и приводим их к диапазону отбраковкой: если значение попало в «хвост», который не делится на размер диапазона нацело, оно отбрасывается и берётся следующее. Без этого шага младшие числа выпадали бы чаще.
Частые случаи
Вопросы
Частые вопросы
Насколько случайны эти числа?
Источник — системный криптографический генератор операционной системы через crypto.getRandomValues, а приведение к диапазону сделано методом отбраковки, поэтому все числа равновероятны. Обычный Math.random() для розыгрышей не годится.
Можно ли использовать для розыгрыша призов?
Да, но результат нигде не сохраняется — страница ничего не пишет на сервер. Для конкурсов, где нужна доказуемость, снимите экран на видео или используйте сервис с постоянной ссылкой на результат.
Дальше