C# 在比较不同创建的guid时,是否有更大的机会发生冲突?

C# 在比较不同创建的guid时,是否有更大的机会发生冲突?,c#,guid,C#,Guid,如果我使用构造函数(比如,Guid myGuid=new Guid(“myGuid”))创建一个Guid,那么它与使用Guid.NewGuid()创建的Guid冲突的可能性是否比使用Guid.NewGuid()创建的两个Guid冲突的可能性更高 编辑: 更具体的问题:如果“myguid”值是由合法的GUID生成器创建的,那么这是一个同等的机会。对于几乎是安全的随机数生成器的,猜测下一个数字并将其传递给新GUID(“myguid”)的概率几乎是不可能的 与旧的生成器不同,当GUID可以追溯到创建它

如果我使用构造函数(比如,
Guid myGuid=new Guid(“myGuid”)
)创建一个Guid,那么它与使用
Guid.NewGuid()
创建的Guid冲突的可能性是否比使用
Guid.NewGuid()创建的两个Guid冲突的可能性更高

编辑:

更具体的问题:

如果“myguid”值是由合法的GUID生成器创建的,那么这是一个同等的机会。

对于几乎是安全的随机数生成器的,猜测下一个数字并将其传递给新GUID(“myguid”)的概率几乎是不可能的


与旧的生成器不同,当GUID可以追溯到创建它的硬件时。那时,您可以对生成GUID的过程进行反向工程,并尝试故意传递冲突的GUID。

真正的答案是这取决于具体情况。根据描述的几个因素创建它。如果采用从
NewGuid
创建它的字符串表示形式,并将其放入构造函数中,那么调用
NewGuid
两次的机会相同


也就是说,并非所有guid都是平等创建的。不同的系统有不同的生成它们的方法,它们可能不像.NET实现那样具有抗冲突性。毫无疑问,我不能创建一个字符串,它可以被解析成不基于任何规则的guid。此GUID发生冲突的可能性要大得多

您可能应该详细说明为什么即使使用
新Guid(“3253545634436…”)
(一个常量Guid)。因为“合法Guid生成器”是指Guid.NewGuid()或类似的。所以“myguid”是在系统外执行的Guid.NewGuid()。好的,如果您假设“合法生成器”,您的答案不适用于该问题。问题不限制“myguid”的来源。正确,但您将其限制为“合法生成器”实际的答案是:机会太小了,你根本不在乎。