Data :: GUID是否生成有效的GUID?

时间:2014-07-07 01:16:42

标签: perl guid uuid

我正在使用Data::GUID生成GUID。但是,每当我在同一个“会话”中生成GUID时,即运行脚本时,唯一改变的数字就是最前面的数字:

3BAF1240-0573-11E4-B31C-B8EC0EDF341C
3BAF1588-0573-11E4-B31C-B8EC0EDF341C
3BAF1678-0573-11E4-B31C-B8EC0EDF341C

第一组数字是唯一有变化的数字。如果我再次运行脚本,那么其余的数字略有不同,但第二组和第三组数字仍然相同:

E5D3A59C-0573-11E4-AA07-A5F15201CE1F
E5D3A920-0573-11E4-AA07-A5F15201CE1F
E5D3A9C0-0573-11E4-AA07-A5F15201CE1F

但同样,唯一不断变化的值是在第一组数字中。这与我在C#中生成GUID时得到的结果非常不同,我认为GUID应该是随机的,那么为什么只有前面的数字集会改变?我可以使用作为GUID生成的GUID吗?

1 个答案:

答案 0 :(得分:6)

不会发生变化的部分取决于您的MAC address。这由1表示为第3组的第一个数字。剩下的比特是基于当前时间的,这就是他们不会发生太大变化的原因。

这些数字当然不是随机的。他们只需要匹配另一个GUID的概率极低。 MAC地址和当前时间(version 1算法)的组合做得相当好,尽管还有其他算法(例如version 4是随机的)。

http://en.wikipedia.org/wiki/Globally_unique_identifier
http://en.wikipedia.org/wiki/Universally_unique_identifier