Це стосується цього питання . Я використовую наведений нижче код з цієї відповіді для створення UUID в JavaScript:
'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)
порція / оцінка?