Учитывая числовой ряд, нахождение Алгоритма проверки цифр ...?

StackOverflow https://stackoverflow.com/questions/2332075

Вопрос

Предположим, у меня есть ряд индексных номеров, который состоит из контрольная цифра.Если у меня есть достаточно достоверная выборка (скажем, 250 индексов выборки), есть ли у меня способ извлечь алгоритм, который использовался для генерации контрольной цифры?

Я думаю, что должен быть программный подход, по крайней мере, для поиска набора возможных алгоритмов.

Обновить:Длина индексного номера составляет 8 цифр, включая контрольную цифру.

Это было полезно?

Решение

Нет, не в общем случае, поскольку количество возможно алгоритмы - это гораздо больше, чем вы можете подумать.Пространства выборки в 250 может быть недостаточно для проведения надлежащего численного анализа.

В качестве крайнего примера предположим, что все ваши выборки состоят из 15 цифр.Ты бы так и сделал не быть в состоянии надежно обнаружить алгоритм, если он изменил поведение для символов, размер которых превышает 15 символов.

Если вы хотите быть уверены, вам следует перепроектировать код, который проверяет достоверность чисел (если таковые имеются).

Если вы знаете, что алгоритм составлен из меньшего подмножества, чем "все возможные алгоритмы", то это может быть возможно.Но алгоритмы могут быть только половиной дела - есть также случай, когда множители, возведение в степень и точки переноса меняются даже при использовании одного и того же алгоритма.

Другие советы

paxdiablo верен, и вы не можете угадать алгоритм, не сделав никакого другого предположения (или просто имея все пространство выборки - тогда вы можете определить алгоритм с помощью справочной таблицы).

Однако, если контрольная цифра вычисляется с использованием некоторой линейной формулы, зависящей от "цифр данных" (что является очень распространенным случаем, как вы можете видеть в статье Википедии), при наличии достаточного количества выборок вы можете использовать исключение Эйлера.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top