昇順または降順でない、作成中の CMS の主キーを探しているので、乱数を使用することにしました。
乱数を PK として使用したいのですが、数値が繰り返される可能性があるため、次の乱数生成に含まれるべきではない数値の配列を与えることは可能ですか?
私はデータベースを使用していません。
あなたが試すことができますGuid
:
string guid = Guid.NewGuid().ToString("N");
msdn から:
GUID は 128 ビットの整数 (16 バイト) であり、一意の識別子が必要なすべてのコンピューターとネットワークで使用できます。このような識別子は、重複する可能性が非常に低い
カウントとプロガイドに反対する興味深いリンク。
データベース (これを強くお勧めします)、テキスト ファイル、またはその他のいずれを使用しているかに関係なく、使用済みのキーに対して新しいキーをチェックするという問題があります。最初は使用するキーがほとんどないため、これは最初は問題になりません。ただし、多くの数値を追加すると、比較するキーが増えるため、新しいキーの検証に時間がかかります。
最初にすべてのキーを一度生成し、キーが使用されるたびに使用済みキーを削除する (または使用済みとしてマークする) ことで、これを解決できます。
詳細について具体的に説明することなく、たとえば、テーブルに 500,000 行 (またはそれ以上) を生成し、行番号、PK、および行を「使用済み」としてマークするフィールドを含めることができます。新しいキーが必要な場合は、ランダムな行から PK を選択し、その行を使用済みとしてマークします (または、必要に応じて削除します)。
テキストファイルを使用する場合は、「選択した」各行を削除することを確認して、同じことを行うことができます。