为了账号安全,请及时绑定邮箱和手机立即绑定

GUID不唯一的简单证明

GUID不唯一的简单证明

C#
动漫人物 2019-07-08 14:46:39
GUID不唯一的简单证明我想证明GUID在一个简单的测试程序中并不是唯一的。我期望下面的代码运行数小时,但它不起作用。我怎么才能让它起作用?BigInteger begin = new BigInteger((long)0);BigInteger end = new BigInteger("340282366920938463463374607431768211456",10);  //2^128for(begin; begin<end; begin++)   Console.WriteLine(System.Guid.NewGuid().ToString());我在用C#。
查看完整描述

3 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

这会持续超过几个小时。假设它在1 GHz(它不会-它将比这慢得多)循环,它将运行10790283070806014188970年。比宇宙的年龄长830亿倍。

假设摩尔定律等等,不运行这个程序要快得多,等上几百年,然后在一台比它快数十亿倍的计算机上运行它。事实上,任何运行时间比CPU速度翻倍(大约18个月)所需时间更长的程序,如果等到CPU速度增加并在运行之前购买一个新CPU(除非您编写它,以便它可以挂起并在新硬件上恢复),就会更快地完成。


查看完整回答
反对 回复 2019-07-08
?
Qyouu

TA贡献1786条经验 获得超11个赞

GUID在理论上是非唯一的。这是你的证据:

  • GUID是一个128位数。
  • 如果不重用旧的GUID,则无法生成2^128+1或更多的GUID。

然而,如果太阳的全部能量输出都是为了完成这项任务,那么在它完成之前很长一段时间就会变冷。

GUID可以使用许多不同的策略生成,其中一些策略采取特殊措施,以保证给定的机器不会产生两次相同的GUID。在特定算法中发现冲突将表明生成GUID的特定方法是错误的,但一般不会证明任何关于GUID的内容。


查看完整回答
反对 回复 2019-07-08
  • 3 回答
  • 0 关注
  • 513 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信