.NET:.NET Compact Framework下如何生成GUID和随机数?

时间:2016-01-08 05:12:09

标签: c# .net random compact-framework guid

我想问一下在.NET Compact Framework下如何生成随机GUID和随机数?我的印象是他们正在使用时钟来产生随机性,但我做了一些实验,似乎并没有使用时钟来产生随机性。这是我使用的代码。

Random r = new Random();

string strGuid = Guid.NewGuid().ToString();
int intRandom = r.Next();
DateTime dt = DateTime.Now;

我在运行.NET compact framework 2.0的设备上运行了4次。 (每次测试间隔超过10秒)。我也为这个实验做了一些不可想象的事情:在最后两次测试中,我取消了RTC上晶体振荡器32.768KHz的连接,故意冻结时间,看它是否仍能产生随机性(我移除了RTC,焊接和放置它们位于带跳线和短线的空白PCB板上。注意:我相信,由于移除了RTC上的晶体振荡器,您无法在仿真器或PC端重现这一点。

测试1

dt {1/8/2016 10:41:14 AM} System.DateTime

intRandom 765865814 int

strGuid“63c6117b-9529-427f-822c-1ebc51089b5b”string

测试2

dt {1/8/2016 10:47:19 AM} System.DateTime

intRandom 203285329 int

strGuid“2f84ca06-497d-4457-9def-1cf59abb4ca0”string

测试3

dt {1/8/2016 10:47:52 AM} System.DateTime

intRandom 1935598076 int

strGuid“5ea1fe9e-0059-4bdb-b3ad-e1197e4b8d9e”string

测试4

dt {1/8/2016 10:47:52 AM} System.DateTime

intRandom 1481224450 int

strGuid“4123b229-998c-4aeb-b90c-dd64db145b23”string

在测试1中,晶体振荡器仍然连接。到目前为止一切正常。

在测试2中,晶体振荡器仍然连接。日期时间正在移动。到目前为止,一切都好。在此测试之后,晶体振荡器的连接被移除。到目前为止一切正常。

在测试3中,在开始测试之前断开晶体振荡器。到目前为止一切都还可以,但要注意时间。

在测试4上,正如预期的那样,由于去除了与晶体振荡器的连接,时间戳与测试3相同。但生成的GUID和随机数仍然是随机的。

我已经重复了这个实验3次,以确保我没有做错任何事。有了这个,尽管时钟停止了,GUID和随机数如何仍然是随机的?

0 个答案:

没有答案
相关问题