获得 Java UUID.randomUUID 冲突的几率有多大?

2022-08-31 09:42:19

我需要在Java中创建一些唯一文件,我计划使用UUID.randomUUID来生成它们的名称。有没有机会为此发生碰撞?我应该做一些像波纹管一样的事情,我不应该担心这一点吗?

Integer attemptsToGenerateUUID = 1;

while (true) {
    UUID fileUUID = UUID.randomUUID();

    if (fileDoesNotExistwith this UUID name) {
        save file;
        break;
    }

    attemptsToGenerateUUID += 1;

    if (attemptsToGenerateUUID > 64) {
        return false;
    }
}

答案 1

根据维基百科,关于随机UUID中重复的概率:

只有在接下来的100年里每秒产生10亿个UUID之后,只创建一个副本的概率为50%左右。或者,换句话说,如果地球上的每个人都拥有6亿个UUID,那么一个重复的概率将约为50%。

我想同样的推理也适用于Java的UUID实现。所以不,你不应该担心这一点。


答案 2