先聲明一下,我是在那篇文章上看到的解決方法:
http://dl.download.csdn.net/down10/20141103/4b173214e41ff3207305c2470524b0f3.zip?response-
content-disposition=attachment%3Bfilename%3D%E8%84%9A%E6%9C
%AC.zip&OSSAccessKeyId=9q6nvzoJGowBj4q1&Expires=1454872774&Signature=HKeFoCiyZteMjgO9ScKmje
iXMg4%3D
方法其實沒啥不同 只是代碼由於大神手打,導致代碼大小寫不清楚,新人看到還得改許多,就如我!所以將代碼重新寫一遍。一是為了方便大家也是為了怕忘了,畢竟不常用/
其中重點是Guid:全局唯一標識符(GUID,Globally Unique Identifier)是一種由算法生成的二進制長度為128位的數字標識符。GUID主要用於在擁有多個節點、多台計算機的網絡或系統中。在理想情況下,任何計算機和計算機集群都不會生成兩個相同的GUID。GUID 的總數達到了2^128(3.4×10^38)個,所以隨機生成兩個相同GUID的可能性非常小,但並不為0。GUID一詞有時也專指微軟對UUID標准的實現。
在理想情況下,任何計算機和
計算機集群都不會生成兩個相同的GUID。
隨機生成兩個相同GUID的可能性是非常小的,但並不為0。所以,用於生成GUID的算法通常都加入了非隨機的參數(如時間),以保證這種重復的情況不會發生。
1 //聲明一個靜態整數變量 通過他的改變 測試后感覺可以是隨機數 不再緊靠(就是隨機數雖然不同但是 接近) 2 private static int randomCount = 0; 3 /// <summary> 4 /// 利用guid哈希值、當前時間ticks和計數器相乘來計算種子,生成rand變量。 5 /// </summary> 6 static float CreateRandomInt() 7 { 8 randomCount++; 9 //s實例化一個Guid類 10 Guid guid = Guid.NewGuid(); 11 12 int key1 = guid.GetHashCode(); 13 // 摘要:獲取表示此實例的日期和時間的計時周期數。 14 // 返回結果: 表示此實例的日期和時間的計時周期數。該值介於 DateTime.MinValue.Ticks 和 DateTime.MaxValue.Ticks 15 // 之間。 16 int key2 = unchecked((int)DateTime.Now.Ticks); 17 18 int seed = unchecked(key1 * key2 * randomCount); 19 // 使用指定的種子值初始化 System.Random 類的新實例。 20 //Seed:用來計算偽隨機數序列起始值的數字。如果指定的是負數,則使用其絕對值。 21 //這就保證了rand的不同 22 Random rand = new Random(seed); 23 float newRand = rand.Next(0, 100); 24 return newRand; 25 }