コンテンツにスキップ

英文维基 | 中文维基 | 日文维基 | 草榴社区

ノート:UUID

ページのコンテンツが他言語でサポートされていません。

可能なUUIDの個数

[編集]

記事には

理論上、UUIDは25616、およそ3.4×1038通り存在することになり、これを使い果たすには、地球の寿命に相当する100億年の間、1ナノ秒おきに1兆個のUUIDを作ってようやく可能になるという計算になる。

という記述がありましたが、大幅に書き換えました。理由を書いておきます。

まず、前半の

理論上、UUIDは25616、およそ3.4×1038通り存在することになり、

という記述は不正確です。 UUID は確かに 16 バイト (=128 ビット) ですが、 128 ビットの並びすべてが有効な UUID となるわけではありません (「理論上」ありえない UUID というのがいろいろあります)。

もっともよく使われている UUID は乱数に基づく UUID (UUID version 4) だと思います。乱数に基づく UUID では 128 ビット中 6 ビットが固定されていて、残りの 122 ビットをランダムに設定するので、 2122 通りがありえます。乱数に基づく UUID 以外にも UUID の生成方式はありますが、それを書き始めると大変そうだったので書いていません。僕もよく理解していませんし。

次に後半の

これを使い果たすには、地球の寿命に相当する100億年の間、1ナノ秒おきに1兆個のUUIDを作ってようやく可能になるという計算になる。

について。この記述は上の理由により不正確ですが、 2122 に合わせて書き換えてもあまり意味のある記述にならないので削除しました。意味がない理由は、各自がランダムに UUID を利用する以上、 2122 個全部使い切る前にほぼ確実に重複が発生するからです。誕生日のパラドックスを考えれば、例えば 261 個を一様乱数で生成した時点で重複が発生している確率はほぼ 1-1/√e (およそ 4 割) だと思います。 --fcp 2009年12月11日 (金) 23:43 (UTC)[返信]