如果我随机生成一个32个字符长的字符串,我能将其用作GUID吗?
我生成的“GUID”与“真实”的GUID相比,在碰撞的可能性上会更高还是更低?
请提供有关GUID的更具体信息以及它们与随机字符串的比较。
GUID生成算法会考虑日期和时间,同时生成随机数来创建最终的128位值。
如果你只是简单地生成随机字符串而没有其他算法的话,那么碰撞的风险会更大。(计算机无法创建真正的随机数,因此必须将其他数据折叠到GUID生成算法中,以降低碰撞的风险。例如,GUID v1使用计算机的MAC地址,但这种方法已经被弃用,因为它会识别出生成计算机。)
你可以创建自己的GUID值,但为什么要重新发明一个已经很好运作的东西呢?
此外,请看Eric Lippert的回答,了解为什么使用GUID优于使用自己编写的随机ID生成器。
这取决于您将使用的算法。如果您有一个好的生成器,结果将是相同的。
可能性取决于两个生成器的好坏(您的与GUID生成器)。
Social MSDN提供了一些信息,但并没有回答你是否更有可能发生碰撞的问题。 Guid Structure告诉我们GUID不是一个字符串,而是“GUID是一个128位整数(16字节),可以在所有计算机和网络上使用,无论何时需要唯一标识符。这样的标识符重复的概率非常低。”