我需要通过散列一些数据来生成全局唯一ID。
一方面,我可以使用时间戳和网络地址的组合,这是唯一的,因为每台计算机只能同时创建一个ID。但由于这个数据很长,我需要哈希它,因此可能会发生冲突。 (作为旁注,如果时间戳不够精确,我们也可以输入一个随机数。)
另一方面,我可以使用随机数和哈希值。不应该带来与第一种方法完全相同的哈希冲突概率吗?这很有意思,因为这种方法会更快,更容易实现。
使用唯一数据而不是随机数据时,哈希冲突方面是否存在差异? (顺便说一句,我不会使用标准所描述的真实GUID,但我只会使用64位长。但这不应该影响这个问题。)
答案 0 :(得分:1)
为什么要打扰随机数?散列旨在将输入统一映射到键空间,但PRNG已经为您提供了统一的结果映射。你所做的只是创造更多的工作。