オブジェクトを表すために一意の6桁のコードを必要とするシステムがあり、それらを生成するための優れたアルゴリズムを考えようとしています。前提条件は次のとおりです。
- 私は基数20のシステムを使用しています(混乱やいたずらな言葉を防ぐために、キャップ、数字、母音、またはlは使用していません)
- ベース20は6400万の組み合わせを可能にします
- 一度に5〜1万のエントリを挿入する可能性があるため、理論的には一括挿入を使用します。つまり、一意のキーを使用すると、効率的またはきれいではない可能性があります(特に衝突が多く発生し始めた場合)。
- 組み合わせの10%を埋めることは問題外ではないので、多くの衝突の可能性が高くなります
- コードが連続していないことを確認したい
私はそれがうまくいくように聞こえるという考えを持っていましたが、それを実装する方法を理解するのに十分な数学がありません。いずれかを繰り返す前に、0〜63,999,999の各値をカウントできるNの値になります。
たとえば、N = 3(つまり、10 mod 3)を使用して0から9に移動すると、0、3、6、9、2、5、8、1、4、7になります。
繰り返さずに全範囲を数えることができるいくつかのより大きな数のNの値を計算するための魔法の数学の方法はありますか?理想的には、私が選んだ数字は、パターンがあることが明らかではないようにセットを飛び回るようなものですが、それがどれほど可能かはわかりません。
あるいは、0〜6400万の値の一意性を保証するハッシュアルゴリズムも機能しますが、それが可能かどうかを知るにはあまりにも愚かです。