Я хотел опубликовать это как комментарий к вашему вопросу, но, очевидно, StackOverflow не позволит мне.
Я только что выполнил элементарный тест на 100 000 итераций в Chrome, используя опубликованный вами алгоритм UUID, и не получил коллизий. Вот фрагмент кода:
var createGUID = function() {
return '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);
});
}
var testGUIDs = function(upperlimit) {
alert('Doing collision test on ' + upperlimit + ' GUID creations.');
var i=0, guids=[];
while (i++<upperlimit) {
var guid=createGUID();
if (guids.indexOf(guid)!=-1) {
alert('Collision with ' + guid + ' after ' + i + ' iterations');
}
guids.push(guid);
}
alert(guids.length + ' iterations completed.');
}
testGUIDs(100000);
Вы уверены, что здесь больше ничего не происходит?