Перейти к основному содержанию
CalcMax

Генератор случайных чисел

Диапазон: 1 – 200

Диапазон: 0 – 4 294 967 295

Результат

63, 1, 53, 99, 97

Выпавшие числа

Возможные значения
100
Вероятность хотя бы одного повтора
9,65 %

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

Формула

next = (state + 0x6D2B79F5), перемешанное умножением со сдвигом → value = minimum + ⌊next × (maximum − minimum + 1)⌋

seed
Начальное состояние генератора, любое целое от 0 до 4 294 967 295. Само по себе оно не источник случайности — это точка, с которой начинается последовательность, и именно поэтому одно и то же зерно всегда даёт один и тот же список
state
Текущее состояние, обновляемое по разу на число. Обновление смешивает состояние с фиксированной константой и несколькими шагами умножения со сдвигом; именно смешивание и делает соседние значения непохожими, и именно этот шаг сломался бы первым, если бы его упростили
minimum, maximum
Концы диапазона, оба включаются. Ширина диапазона — то, на что умножается доля, поэтому у каждого целого числа диапазона одинаковый шанс
⌊ ⌋
Округление вниз. Генератор выдаёт долю в промежутке [0, 1), а округление вниз превращает её в одно из целых чисел диапазона
count
Сколько чисел выдать, до 200. С выключенными повторами оно не может превысить ширину диапазона, потому что выборка не бывает длиннее пула, из которого берётся

Берите его, когда нужен именно список, а не одно число: выборка, которую надо проверить вручную, набор тестовых случаев, обязанный совпадать при каждом запуске, розыгрыш, который хочется прогнать заново на глазах у аудитории, или данные-заглушки. Возможность зафиксировать зерно и есть причина предпочесть это любой случайной функции, которая идёт в комплекте с языком: зерно превращает одноразовый результат в то, чем можно поделиться, что можно перепроверить и о чём можно спорить. Обращайтесь к нему с выключенными повторами, когда один и тот же элемент не должен появиться дважды, — такова форма лотерейного розыгрыша, случайной выборки из списка и перемешанного порядка. И две вещи, для которых он не годится: он не источник непредсказуемых чисел, поэтому всё, что обязано быть неотгадываемым, здесь не место; и он не замена статистической случайной выборке из реальной совокупности, потому что о совокупности он не знает ничего, а знает только о диапазоне.

Разобранные примеры

  1. Пять чисел от 1 до 100 и те же пять снова

    1. Диапазон от 1 до 100 вмещает 100 различных значений, поэтому каждое вытягивание — одно из 100
    2. Зерно 1 фиксирует начальное состояние; каждое из пяти чисел обновляет его по разу
    3. Округление каждой доли вниз в промежуток от 1 до 100 даёт 63, 1, 53, 99 и 97 в этом порядке

    Эти пять чисел — не совпадение и не сохранённая наперёд таблица: это то, что даёт зерно 1, и повторный ввод 1 в поле зерна воспроизводит их в точности. Заметьте, что 9,65 % — утверждение о диапазоне и количестве, а не об этой конкретной раздаче: при пяти вытягиваниях из ста значений шанс, что два из них совпадут, чуть меньше одного из десяти, независимо от того, совпала ли хоть одна пара в этом списке. Смена зерна на 7 даёт совершенно другой список, не трогая этот процент, и это самый чистый способ увидеть, какая часть панели случайна, а какая — арифметика.

  2. Шесть чисел от 1 до 49 с запретом повторов

    1. Пул — 49 значений, и шесть вытягиваются без возвращения
    2. Каждое новое число перевытягивается, пока не окажется тем, которого пул ещё не отдал, и поэтому значение не может появиться дважды
    3. Если читать список в порядке появления, получается 23, 16, 33, 31, 8 и 11

    Выключение повторов не меняет 27,26 %, и в этом и смысл показывать это число рядом с примером: это шанс, что шесть вытягиваний из 49 столкнулись бы, если бы повторы были разрешены, и он одинаков независимо от того, запретили вы их или нет. Именно поэтому выборка без повторов дорого обходится при больших количествах: при 49 значениях и 6 вытягиваниях больше четверти неограниченных раздач повторили бы что-нибудь, а к 23 вытягиваниям из 365 эта величина превышает половину. Числа остаются в порядке вытягивания, а не сортируются, — чтобы одно и то же зерно и одни и те же настройки всегда воспроизводили один и тот же список.

  3. Диапазон, в котором всего одно значение

    1. Диапазон вмещает ровно одно значение, поэтому каждое вытягивание даёт именно его
    2. Шанс повтора — это шанс, что четыре вытягивания столкнутся, а при пуле в одно значение они обязаны столкнуться
    3. Результат — 7, 7, 7 и 7

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

Ограничения

Эти числа не годятся ни для чего, что обязано быть неотгадываемым. Генератор — это небольшая, быстрая, начатая зерном арифметическая последовательность, из тех, что встроены в обычное программное обеспечение: зная зерно, любой воспроизведёт весь список, а по нескольким его значениям восстановит и остальные. Это исключает его из паролей, ключей, токенов, одноразовых кодов, лотерей с деньгами и всего прочего, где участник не должен уметь предсказать или восстановить раздачу. Для них единственно верный ответ — криптографический источник случайности. Шанс повтора тоже не является утверждением о списке, на который вы смотрите: это вероятность того, что раздача такого размера из такого пула содержит хотя бы одно совпадение, посчитанная так, как если бы вытягивания были независимыми и равномерными, и она показывается независимо от того, были повторы разрешены или нет. Практический смысл у неё тот, что чаще всего и застаёт врасплох: для столкновения достаточно примерно квадратного корня из размера пула, поэтому 23 вытягивания из 365 уже превышают равные шансы. И количество ограничено 200 за запуск, а без повторов оно вовсе невозможно, как только превысит пул.

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

Этими числами можно пользоваться в лотерее, пароле или токене безопасности?
Нет. Этот генератор — небольшая начатая зерном арифметическая последовательность, из тех, что использует обычное программное обеспечение, а не криптографическая: по зерну воспроизводится весь список, а по нескольким его значениям восстанавливаются остальные. Всё, где участник не должен уметь предсказать или восстановить результат, — лотереи с деньгами, пароли, ключи, токены, одноразовые коды — требует вместо этого криптографического источника случайности. Для розыгрышей, выборок, игр и тестовых данных, где воспроизводимость является свойством, а не утечкой, это правильный инструмент.
Зачем нужно зерно и почему числа каждый раз одни и те же?
Зерно — это состояние, с которого начинается последовательность, поэтому одно и то же зерно всегда даёт один и тот же список. Это сделано намеренно: результат становится воспроизводимым, а это как раз то, что нужно, когда выборку надо передать другому, розыгрыш — прогнать заново на глазах у аудитории, а тестовый случай — удержать от дрейфа. Смените зерно — и получите другой список при тех же настройках. Если хочется, чтобы числа отличались каждый раз, меняйте зерно между запусками: введённое значение записывается вместе с результатом, поэтому понравившийся список всегда можно восстановить.
Почему повторы всё-таки появляются, когда они разрешены?
Потому что каждое вытягивание независимо. Когда повторы разрешены, каждая позиция выбирает одно из значений диапазона, не глядя на то, что выбрали другие позиции, и это честная модель для броска кубика или лотерейного барабана, возвращающего шар на место. Шанс повтора на панели — это ровно вероятность того, что совпадёт хотя бы одна пара: около 9,65 % для пяти вытягиваний из ста значений и больше 50 %, как только вы вытягиваете 23 значения из 365. Выключайте повторы, когда одно и то же значение не должно появиться дважды, — такова форма лотереи, выборки из списка или перемешанного порядка.
Шанс повтора уменьшится, если запретить повторы?
Нет, и панель намеренно продолжает показывать то же число. Оно отвечает на вопрос, который вы в действительности задаёте, щёлкая этим переключателем: насколько вероятно было бы совпадение, если бы повторы были разрешены. Для шести чисел от 1 до 49 это 27,26 %, так что запрет повторов устраняет настоящий риск, а не теоретический. Это же объясняет, почему выборка без повторов при больших количествах становится медленной и в конце концов невозможной: как только количество превышает число значений в диапазоне, допустимого ответа нет вовсе, и страница сообщает об этом, а не возвращает список покороче.
Сколько чисел можно получить зараз и в каком диапазоне?
До 200 чисел за запуск, а концы диапазона должны быть целыми, причём минимум не больше максимума. Сами значения могут быть отрицательными, поэтому диапазон от −50 до 50 годится. Нецелые концы отклоняются, а не округляются: с запретом повторов вытягивание из диапазона, содержащего дроби, превратило бы правило о повторах в пустое условие, а список, который выглядит правдоподобно и при этом молча игнорирует собственную настройку, хуже сообщения об ошибке.
Числа отсортированы?
Нет — они напечатаны в порядке вытягивания, и этот порядок является частью результата. Сортировка выбросила бы информацию, которую одно и то же зерно как раз и должно воспроизводить, а она важна всюду, где позиция что-то значит, — например, при назначении перемешанного порядка или при раздаче карт. Если нужна упорядоченная выборка, отсортируйте список сами после копирования; сама раздача остаётся верной той последовательности, которую породило зерно.

Источники

Похожие калькуляторы