Javascript 重复执行程序是否会增加唯一ID冲突的机会
我知道像UUID和nanoid这样的独特id生成器的要点是碰撞在很长很长时间内都不会发生。但随后重新执行一项计划会增加机会吗 例如: (我对RNG或UUID了解不多,因此这可能不能完全反映流程,但这个示例将解释我为什么要问这个问题) 第一次执行:使用种子0初始化了nanoid。它将产生的ID链将是A、B、C、D……等等。在这个特定的链中,我们很长一段时间内都不会再看到A,B,C,所以在这个程序执行过程中,没有什么好担心的 后续执行:使用种子0初始化nanoid将是一个明显的问题,但即使它不相同,我假设从种子生成的元素不是该种子唯一的Javascript 重复执行程序是否会增加唯一ID冲突的机会,javascript,random,uuid,nanoid,Javascript,Random,Uuid,Nanoid,我知道像UUID和nanoid这样的独特id生成器的要点是碰撞在很长很长时间内都不会发生。但随后重新执行一项计划会增加机会吗 例如: (我对RNG或UUID了解不多,因此这可能不能完全反映流程,但这个示例将解释我为什么要问这个问题) 第一次执行:使用种子0初始化了nanoid。它将产生的ID链将是A、B、C、D……等等。在这个特定的链中,我们很长一段时间内都不会再看到A,B,C,所以在这个程序执行过程中,没有什么好担心的 后续执行:使用种子0初始化nanoid将是一个明显的问题,但即使它不相同,
- 种子0->A、B、C、D
- 种子1->W,X,Y,Z….A…B,C
我的想法对吗?这值得担心吗?回答标题中的问题:也许,也许不 这取决于某些事情:
- 程序是否检查生成的ID的唯一性
- 程序是否从固定种子开始生成ID
- ID中使用了哪些类型的数字?它们是伪随机数吗?它们是时间戳吗?它们是序列号吗?它们是由加密RNG生成的吗
- 如果数字是伪随机的,程序如何初始化PRNG?有固定的种子?用粗糙的时间戳?有高分辨率的时间戳吗?使用加密随机数
碰撞是否值得担心?如果您的应用程序不能容忍程序生成重复ID的风险,那么可能是这样。这取决于您如何生成UUID。