[解決済み】JavaでUUIDの最上位ビットを使用した場合の衝突の可能性
2022-04-03 03:09:29
質問
を使用する場合
Long uuid = UUID.randomUUID().getMostSignificantBits()
どの程度の確率でコリジョンが発生するのでしょうか。最下位ビットをカットするので、コリジョンに遭遇する可能性はありますよね?
どのように解決するのですか?
によると
ドキュメント
という静的メソッドがあります。
UUID.randomUUID()
はタイプ4のUUIDを生成する。
これは、6ビットが何らかの型情報に使われ、残りの122ビットがランダムに割り当てられることを意味します。
ランダムでない6つのビットは、UUIDの最上位半分に4つ、最下位半分に2つ分散して配置されています。つまり、UUIDの最上位半分には60ビットのランダム性が含まれており、平均して2^30のUUIDを生成しないとコリジョンが発生しないことになります(UUID全体では2^61です)。
だから、むしろ安全だと言えるでしょう。ただし、Carl Seleborgが言及しているように、これは他のタイプのUUIDには絶対に当てはまらないことに注意してください。
ちなみに、UUIDの最下位半分を使用する(またはSecureRandomを使用してランダムな長さを生成する)ことで、少しはマシになるでしょう。
関連
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] Mavenです。JARは空になります - 含有するためにマークされたコンテンツがありません
-
[解決済み] なぜゲッターとセッター/アクセッサーを使うのですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] Javaでメソッドの実行時間を計るにはどうしたらいいですか?
-
[解決済み】JSP 2を使用して、JSPファイル内のJavaコードを回避するにはどうすればよいですか?
-
[解決済み】UUIDはどのようにユニークなのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ORA-00933: SQL コマンドが正しく終了していません。
-
[解決済み] Jdbctemplate の文字列に対するクエリです。EmptyResultDataAccessException: 不正な結果サイズ:期待値1、実際0
-
[解決済み] このフォーマット(Tue Jul 13 00:00:00 CEST 2010)の日付をJavaの日付に変換する方法(文字列はalfrescoのプロパティに由来しています)
-
[解決済み] Java Swingで複数のボタンに対して複数のActionListenersを追加する方法
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] Apache Camelのログに簡単なテキストを記録する
-
[解決済み] x--やx++はここで何をするのですか?
-
[解決済み】JavaでGUIDを作成する