13

可能重复:
GUID 是否 100% 都是唯一的?

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

不同机器生成的指南也保持其唯一性。

我已经阅读过关于单机上的 guid 唯一性,但我仍然不知道不同机器上的唯一性

4

3 回答 3

16

人们普遍认为,新的随机 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 分之一

以 10 亿台计算机上的 10 亿个 guid 为例,产生欺骗的几率为:5,316,911,983,139,663,491 分之一(即 5.3 万亿分之一)。

数字不言自明,你不会产生欺骗。

如果您想知道我从哪里得到这些数字,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亿年。这比地球上存在的生命还要长。或者如果你是一个年轻的地球创造论者,那至少是地球寿命的六万倍。

于 2012-12-28T18:48:11.717 回答
5

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

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

来自MSDN

于 2012-12-28T18:49:11.540 回答
2

我记得在某处听说过,如果您将 IPV4 地址空间(32 位)想象为邮票的大小,那么 IPV6(128 位)就是我们太阳系的大小。产生欺骗是不会发生的。

此外,如果有任何事情,您更有可能获得重复的同一台机器而不是两台不同的机器,因为大多数 Guid 生成算法会将您的计算机 NIC MAC 地址嵌入到 guid 中(它是 48 位)。虽然有些算法不嵌入 MAC 地址,只是纯粹随机的。见: http: //guid.us/

编辑:另一个有趣的比例示例,地球的体积约为 10^27 立方厘米。这意味着地球整个体积的每立方厘米都可以拥有 340,000,000,000 guid。这个数字大得令人难以置信。

或者,地球表面的每平方纳米表本身可能有大约 650,000 个 guid。

于 2012-12-28T18:57:31.120 回答