这涉及到这个问题。我正在使用此答案中的以下代码在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中运行的网络应用。
- 16个用户。
- 这些用户在过去2个月中已生成约4000个UUID。
- 我发生了大约20次碰撞-例如,今天生成的新UUID与大约2个月前相同(不同的用户)。
是什么导致此问题,如何避免呢?
(r&0x3|0x8)
部分是什么意思/评估?