1. ホーム
  2. math

[解決済み] GUIDは常に一意であると仮定しても安全ですか?

2022-06-27 08:17:33

質問

衝突の可能性があることは承知していますが、たとえば 1000 個の GUID を一括して生成した場合、1 つ 1 つのテストを省くために、すべてユニークであると仮定しても安全でしょうか。

ボーナス質問

GUIDの一意性をテストする最適な方法は?ブルームフィルタでしょうか?

どのように解決するのですか?

はい、できます。 GUID は 128 ビット長なので、衝突の可能性は微小ですが、「微小」という言葉は今ひとつ強度が足りません。 次のようなものがあります。 非常に多くの GUID があります。 を生成すると 数兆 をランダムに生成しても、1 回でも衝突するよりも隕石にぶつかる可能性のほうが高いということです (以下、3rd>より)。 ウィキペディア ). また、ランダムに生成しているわけではなく など を使用している場合、MAC アドレスはコンピュータ間で一意であり、タイムスタンプは コンピューターで一意であるためです。

1を編集します。 あなたのボーナス質問に答えるために、GUIDのセットの一意性をテストする最適な方法は、それらがすべて一意であると仮定することです。 なぜでしょうか。 なぜなら、生成するGUIDの数を考えると、GUIDの衝突の確率は、宇宙線がコンピュータのメモリ内のビットを反転させ、あなたが実行しようとするどんなquot; accurate"アルゴリズムによって与えられる答えを台無しにする確率よりも低いからです。 (参照 この StackOverflow の回答 を参照してください)。

があります。 膨大な の GUID が存在します。 Douglas Adams の言葉を引用すると 銀河ヒッチハイク・ガイド』(Hitchhiker's Guide to the Galaxy) :

<ブロッククオート

宇宙は大きい。本当に大きい。あなたは、それがどれほど膨大で気の遠くなるような大きさであるか、信じないでしょう。つまり、あなたは化学者までの道のりを長いと思うかもしれませんが、それは宇宙に比べたらほんの些細なことなのです、いいですか。

とあることから 7×10程度 22 宇宙の星 であり、2個弱の 128 のGUIDがあるとすると、約4.86×10個の 15 -ほぼ 5クアドリリオン -のGUIDがあります。 もしそれらの星の1つ1つに私たちのような人口が繁栄している世界があるとしたら、それぞれの星の周りには 今まで生きてきたすべての人間や宇宙人が は、4万5千を超えるGUIDの権利を持つことになります。 宇宙のすべての星の、歴史上のすべての人のために。 GUID空間は、全宇宙の大きさと同じレベルです。 あなたは ではない は心配する必要はありません。

( 2を編集します。 反省点:うわー。 私は気づいていませんでしたが 自分 これが何を意味するのか。 GUID空間は、理解できないほど巨大です。 ちょっと畏怖の念を覚えます(笑)。