チェック ディジットで構成される一連のインデックス番号があるとします。十分な数のサンプル (例えば 250 サンプル インデックス番号) がある場合、チェック ディジットの生成に使用されたアルゴリズムを抽出する方法はありますか?
可能なアルゴリズムのセットを見つけるには、少なくともプログラムによるアプローチが必要だと思います。
更新: インデックス番号の長さは、チェック ディジットを含めて 8 桁です。
チェック ディジットで構成される一連のインデックス番号があるとします。十分な数のサンプル (例えば 250 サンプル インデックス番号) がある場合、チェック ディジットの生成に使用されたアルゴリズムを抽出する方法はありますか?
可能なアルゴリズムのセットを見つけるには、少なくともプログラムによるアプローチが必要だと思います。
更新: インデックス番号の長さは、チェック ディジットを含めて 8 桁です。
いいえ、一般的なケースではありません。可能なアルゴリズムの数は、あなたが考えているよりもはるかに多いからです。適切な数値解析を行うには、250 のサンプル空間では不十分な場合があります。
極端な例として、サンプルの長さがすべて 15 桁であるとします。15 文字を超える文字の動作が変更された場合、アルゴリズムを確実に検出することはできません。
確認したい場合は、番号の有効性をチェックするコードをリバース エンジニアリングする必要があります (利用可能な場合)。
アルゴリズムが「すべての可能なアルゴリズム」よりも小さなサブセットから抽出されていることがわかっている場合、それは可能かもしれません。しかし、アルゴリズムは話の半分にすぎない可能性があります。同じアルゴリズムを使用しても、乗数、累乗、ラップアラウンド ポイントが変わる場合もあります。
paxdiablo は正しく、他の仮定を行わずにアルゴリズムを推測することはできません (またはサンプル空間全体を使用するだけで、ルックアップ テーブルでアルゴリズムを定義できます)。
ただし、チェック ディジットが「データ ディジット」に依存する何らかの線形式を使用して計算される場合 (ウィキペディアの記事でわかるように、これは非常に一般的なケースです)、十分なサンプルがあれば、オイラー消去法を使用できます。