メインコンテンツに移動

ランダムな UUID v4 を生成する

バージョン4の UUID は128ビットの値で、そのうち122ビットが暗号論的に安全な乱数源から得られます。残りの6ビットはバージョンと RFC バリアントを表すため、すべての UUID v4 は3番目のグループが 4 で始まります。

計算例

入力したランダムバイト
9d 41 7c 02 e8 5b 13 f6 2a 7e c1 94 06 d3 b8 5f
結果
9d417c02-e85b-43f6-aa7e-c19406d3b85f
生成した UUID の数重複が1つ以上発生する確率
10⁶≈ 9.4 × 10⁻²⁶
10⁹≈ 9.4 × 10⁻²⁰
10¹²≈ 9.4 × 10⁻¹⁴
10¹⁵≈ 9.4 × 10⁻⁸

重複確率が50%になる UUID の数: ≈ 2.71 × 10¹⁸

仕組み

  • ジェネレーターは16バイトを安全な乱数で埋め、バイト6の上位ニブルを 4(バージョン)に、バイト8の上位2ビットを 10(バリアント)に設定します。そのため3番目のグループは 4 で、4番目のグループは 8、9、a、b のいずれかで始まります。
  • 取り得る値は2¹²²通りあり、誕生日問題の近似式 p ≈ 1 − e^(−n²/2¹²³) で、n 個のランダム UUID に重複が1つ以上含まれる確率を求められます。
  • UUID v4 にはタイムスタンプやハードウェア情報が含まれません。識別子として使い、パスワードや認証用の秘密値としては使わないでください。
UUIDバージョン

一度に1〜100個のUUIDを生成

UUIDについて

UUID v1: タイムスタンプとUUIDを生成するコンピューターのMACアドレスを含む時刻ベースのUUID。UUIDがいつ作成されたかを知る必要がある場合に便利です。

UUID v4: ランダムに生成されたUUID。これは最も一般的に使用されるバージョンで、情報漏洩を最小限に抑えながら優れた一意性を提供します。

UUID v5: SHA-1ハッシュを使用した名前ベースのUUID。同じ名前空間と名前を指定すると、常に同じUUIDが得られます。決定論的なUUID生成に便利です。

その他の UUID ガイド