Guid Uniqueness在不同的机器上

Roh*_*arg 10 c# sql-server operating-system programming-languages guid

可能重复:
GUID在100%的时间内是唯一的吗?

在阅读Guid上的所有帖子后,我仍然不清楚一件简单的事情:

不同机器生成的Guids也保持其唯一性.

我在单机上读过关于guid唯一性的内容,但我仍然不了解不同机器的唯一性

Pau*_*ing 14

通常认为新的随机GUID始终是唯一的.概率地说这不是真的,但是产生欺骗的可能性非常小,我们不需要关心它.

生成两个相同guid的几率为5,316,911,983,139,663,491,615,228,241,121,400,000

因此,如果您在100万台计算机上生成100万个guid,则生成重复项的几率为:5,316,911,983,139,663,491,615,228中的1个

在10亿台计算机上获取10亿个guid,产生欺骗的几率为:5,316,911,983,139,663,491(即5.3 quintillion)中的1个.

这些数字不言而喻,你不会产生欺骗.

如果您想知道我在哪里获得这些数字,GUID的值部分是122位.2 ^ 122是5.3169119831396634916152282411214 x 10 ^ 36

一些更疯狂的数字......
如果你每秒产生100万个guid,那么在概率上保证重复需要168,486,464,147,580,370,470,736年.

@viggity提到一些guid有48位被一个mac地址占用,这些数字仍然是惊人的,因此可以承受丢失这些位.以上面每秒200万个guid(在同一台计算机上)的例子来说,保证欺骗仍然需要598,584,166年.那是6亿年.这比生命在地球上存在的时间更长.或者,如果你是一个年轻的地球创造论者,那至少是地球生命的6万倍.

  • -1表示错误概率,完全忽略4/5 UUID生成方案.由于生日问题,重复的几率实际上明显高于您的数字.现在,有122个随机位,仍有10亿个不足以发生碰撞.但是根据你生成的类型,生成它们的速度,以及你使用多少种不同的机器,由于鸽子原理,赔率为1.一些UUID包括时间戳,MAC地址,"域ID"以及在延长的时间段内或对于给定计算机明显不唯一的其他值. (4认同)
  • 只是为了增加讨论,维基百科条目中关于GUID的引用:'一些有缺陷的GUID生成实现依赖于伪随机数生成器,它们使用随机数种子源,结果证明是可预测的'.因此在数学上有2 ^ 122个可能的值(保留6个比特来表示随机GUID),但实际上它可以受到RND函数的限制. (2认同)
  • +1使我惊讶 (2认同)
  • 完全偏离主题,神创论者可能会使用 14 位 GUID,可能会违反 122 位 GUID,声称它代表一个大于地球年龄的数字,因此不是真实的。 (2认同)

Til*_*lak 5

GUID 是“实际上”普遍唯一的。

GUID 是一个 128 位整数(16 字节),可用于所有需要唯一标识符的计算机和网络。这样的标识符被复制的可能性非常低。

来自MSDN