Коллизии при генерации UUID в JavaScript?

Это относится к этому вопросу . Я использую приведенный ниже код из этого ответа для генерации 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 пользователей.
  • около 4000 UUID были сгенерированы этими пользователями за последние 2 месяца.
  • Я получил около 20 столкновений - например, новый UUID, созданный сегодня, был таким же, как и около 2 месяцев назад (другой пользователь).

Что вызывает эту проблему и как ее избежать?

90
задан Mark Amery 23 September 2019 в 22:23
поделиться