我知道像 UUID 和 nanoid 这样的唯一 id 生成器的意义在于,碰撞不应该在很长一段时间内发生。但是随后重新执行程序会增加机会吗?
示例:(我对 RNG 或 UUID 了解不多,因此这可能无法完全反映该过程,但此示例将解释我问这个问题的原因)
第一次执行: nanoid 使用种子 0 进行初始化。它将产生的 id 链将是 A、B、C、D...等。而且我们在这个特定的链中很长一段时间都不会再看到 A、B、C,所以在这个程序执行期间,没有什么可担心的。
随后的执行:使用 0 种子初始化 nanoid 将是一个明显的问题,但即使它不一样,我假设从种子生成的元素并不是该种子独有的。
- 种子 0 -> A,B,C,D......
- 种子 1 -> W,X,Y,Z.....A...B,C
因此,即使选择了不同的种子,在某些时候仍然可以达到相同的 ID。
我的想法是否正确,这值得担心吗?