これはこの質問に関連しています。この回答の以下のコードを使用して、JavaScriptでUUIDを生成しています。
'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
このソリューションは正常に機能しているようですが、衝突が発生しています。ここに私が持っているものがあります:
- Google Chromeで実行されるWebアプリ。
- 16ユーザー。
- これらのユーザーによって、過去2か月間に約4000のUUIDが生成されています。
- 約20回の衝突が発生しました。たとえば、今日生成された新しいUUIDは約2か月前と同じでした(別のユーザー)。
この問題の原因は何ですか?どうすれば回避できますか?
(r&0x3|0x8)
部分は何を意味していますか/評価は?