Правило произведения для кода
Код строится позиция за позицией. На первое место можно поставить любой из n символов. На второе — любой, кроме уже использованного, то есть n − 1. На третье остаётся n − 2, и так далее до k-й позиции.
Числа выбора на разных позициях перемножаются, потому что каждый вариант начала можно продолжить каждым допустимым способом. Получается n·(n − 1)·…·(n − k + 1).
Рассуждение справедливо для любого алфавита: цифр, латинских букв, пиктограмм. Важно лишь, чтобы символы были различимы и каждый можно было поставить на любую позицию кода.
Формула через факториалы
Произведение убывающих множителей записывают компактно: A(n, k) = n! / (n − k)!. Факториал (n − k)! в знаменателе «срезает» лишние множители, которые не входят в произведение.
Крайние случаи полезны для проверки: при k = 1 получается n, а при k = n — полная перестановка n!, то есть десять разных цифр в десяти позициях дают 3 628 800 кодов.
Пример: код замка из четырёх цифр
Для четырёх разных цифр из десяти получаем 10·9·8·7 = 5040. Обычный четырёхзначный код допускает повторы и даёт 10⁴ = 10 000 вариантов. Значит, коды без повторов составляют 50,4 % от всех.
Для шести цифр доля падает: 151 200 из 1 000 000, то есть 15,12 %. Чем длиннее код, тем реже в нём все цифры различны.
Ещё один пример с буквами: из 26 латинских букв можно составить 26·25·24 = 15 600 трёхбуквенных кодов без повторов, тогда как с повторами их 17 576.
Меньше вариантов — слабее код
Иногда запрет на повторы воспринимают как усиление защиты, но с точки зрения перебора всё наоборот. Если известно, что цифры различны, злоумышленнику достаточно проверить 5040 вариантов вместо 10 000; вероятность угадать с одной попытки равна 1/5040, примерно 0,0198 %.
Поэтому правило «без повторов» полезно для запоминания или для уникальных идентификаторов, а не для безопасности. Калькулятор считает число вариантов, но не оценивает стойкость реального пароля.
Частые ошибки в постановке
Путают размещения с сочетаниями: если порядок не важен, число вариантов делят ещё на k!. Для кода порядок важен всегда, иначе 1234 и 4321 были бы одним кодом.
Другая ошибка — не учитывать ноль в алфавите цифр или, наоборот, исключать его без причины. Размер алфавита n должен точно отражать допустимые символы, а длина кода не может превосходить его.
Пределы расчёта
Модель предполагает равноправные символы и независимый выбор позиций. Если на некоторых местах действуют особые правила, например первая позиция не может быть нулём, формулу придётся скорректировать вручную.
Калькулятор принимает n до 100 и требует, чтобы результат оставался в пределах 10¹⁵. Для очень длинных кодов число вариантов выходит за этот предел.
Если нужен код, где повторы разрешены, число вариантов находится как n в степени k; такую задачу решает отдельный калькулятор возведения в степень или подсчёта паролей по алфавиту.
Формула расчёта
A(n, k) = n! / (n − k)! = n·(n − 1)·…·(n − k + 1)
Проверенные примеры
Сколько существует кодов длины 4 из цифр 0–9, если цифры не повторяются?
На первую позицию 10 вариантов, на вторую 9, на третью 8, на четвёртую 7: 10·9·8·7 = 5040. С повторами было бы 10⁴ = 10 000.
То же для длины 6.
10·9·8·7·6·5 = 151 200 вариантов, что составляет 15,12 % от 10⁶ кодов с повторами.
Как пользоваться онлайн-калькулятором
- Определите размер алфавита: например, 10 для цифр от 0 до 9.
- Введите длину кода и убедитесь, что она не больше размера алфавита.
- Нажмите «Вычислить» и прочитайте число вариантов.
- Для сравнения с кодом, допускающим повторы, возведите n в степень k.