Рандомайзер чисел

Случайное целое число между двумя границами

Рандомайзер чисел

Случайное число от
до

Как работает рандомайзер чисел

Популярные диапазоны

1–10 · 1–100 · 1–6 · 1–2 · 1–3 · 1–4 · 1–5 · 1–20 · 1–50 · 1–1 000 · 0–9 · 0–1 · 1–60 · 1–12 · 1–30 · 1–8 · 1–25 · 1–365 · 1–10 000 · 0–100 · 1–200 · 1–500 · 1–40 · 0–10

Формула любого диапазона

В диапазоне от min до max, где обе границы включены,

N = max − min + 1

целых чисел, и честный генератор даёт каждому одинаковый шанс P = 1 / N. Про «+ 1» чаще всего и забывают: от 1 до 100 — это 100 чисел, а не 99, потому что считаются оба края. Если повторы разрешены, броски независимы, и шанс, что конкретное число выпадет хотя бы раз за k бросков, равен

1 − (1 − 1/N)k

— он переваливает за 50% примерно через 0,69 × N бросков (ln 2 ≈ 0,693), а не через N / 2.

Как вытягивается число — по шагам

  1. Браузер заполняет 32-битное слово из crypto.getRandomValues() — значение от 0 до 4 294 967 295.
  2. Слова, не меньшие ⌊232 / N⌋ × N, отбрасываются и тянутся заново. Отсечка делает пространство ровно кратным N; без неё остаток от деления слегка благоволил бы малым числам.
  3. Оставшееся слово делится на N, и остаток прибавляется к min. Для нескольких разных чисел генератор частично тасует диапазон (Фишер — Йетс), поэтому каждое число может выпасть только один раз.

Почему не Math.random()

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

Как читать результат

ДиапазонЦелых чиселШанс каждого числа Бросков до 50%
1–2250%1
1–66≈16,67%4
1–101010%7
1–20205%14
1–1001001%69
1–1 0001 0000,1%693
1–10 00010 0000,01%6 932

«Бросков до 50%» — сколько независимых бросков нужно, чтобы одно конкретное число выпало хотя бы раз с шансом не меньше половины. Прошлые броски ничего не меняют: число, которое давно не выпадало, не становится «должным».

Для чего его используют

  • Розыгрыши и конкурсы: пронумеруйте участников и вытяните победителя от 1 до их количества.
  • Числа «как в лотерее»: несколько разных чисел сразу с отметкой «Без повторов», при желании по порядку.
  • Игры: замена кубику — от 1 до 6 для обычного, от 1 до 20 для d20.
  • Уроки и собрания: выбрать, чья очередь, по номеру в списке.
  • Выборка: решить, какие строки, товары или респонденты попадут в случайную выборку.
  • Спор без победителя: когда все варианты одинаково хороши, пусть решит число.

Ограничения и оговорки

  • Алгоритм, а не физический процесс. Числа дают криптографически стойкий генератор псевдослучайных чисел: на практике непредсказуемый, но вычисляемый. Сервисы вроде random.org берут случайность из физического шума; в бытовых розыгрышах разницы не увидеть.
  • Только целые числа от 0 до 1 000 000; нижняя граница должна быть меньше верхней.
  • До 1 000 чисел за раз, а без повторов — не больше, чем есть в диапазоне.
  • Ничего не сохраняется. История живёт только в этой вкладке; для жеребьёвки, которую нужно засвидетельствовать или проверить, следуйте процедуре из ваших правил.

Смотрите также

Рандомайзер чисел

Этот генератор выбирает случайное целое число между двумя границами, обе границы входят в диапазон. Число вытягивается в вашем браузере из его криптографического источника случайности, и у каждого числа диапазона одинаковый шанс. Например, он поможет узнать случайное число от 1 до 100? Введите нижнюю границу (например, '1') и верхнюю (например, '100') и нажмите «Сгенерировать». На странице диапазона можно вытянуть сразу несколько чисел — с повторами или без.

FAQ

Как генератор выбирает случайное число?

Он берёт у браузера 32-битное случайное значение из crypto.getRandomValues() и переводит его в диапазон. Значения из неполного последнего блока 32-битного пространства отбрасываются и вытягиваются заново (метод отбраковки), поэтому у каждого числа диапазона ровно одинаковый шанс, а малые числа не получают незаметного перевеса.

Входят ли границы в диапазон?

Да. В диапазоне от 1 до 100 ровно 100 целых чисел, и 1 и 100 выпадают так же часто, как 50. В общем виде от min до max помещается max − min + 1 чисел, и шанс каждого — один из этого количества.

Можно ли вытянуть несколько чисел без повторов?

Да. Укажите, сколько чисел нужно, и отметьте «Без повторов»: тогда генератор тянет числа без возвращения, как шары из лототрона, и ни одно не выпадет дважды. Без повторов нельзя попросить больше чисел, чем есть в диапазоне.

Насколько случайно это число?

Криптографический генератор браузера получает начальное значение из энтропии операционной системы и устроен так, чтобы его выход нельзя было предсказать, — из того же источника берутся ключи шифрования. Но это всё же алгоритм, а не физический процесс; для официальной жеребьёвки с протоколом используйте процедуру, которую требуют ваши правила.