先聲明一下,我是在那篇文章上看到的解決方法:算法
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網絡
方法其實沒啥不一樣 只是代碼因爲大神手打,致使代碼大小寫不清楚,新人看到還得改許多,就如我!因此將代碼從新寫一遍。一是爲了方便你們也是爲了怕忘了,畢竟不經常使用/dom
其中重點是Guid:全局惟一標識符(GUID,Globally Unique Identifier)是一種由算法生成的二進制長度爲128位的數字標識符。GUID主要用於在擁有多個節點、多臺計算機的網絡或系統中。在理想狀況下,任何計算機和計算機集羣都不會生成兩個相同的GUID。GUID 的總數達到了2^128(3.4×10^38)個,因此隨機生成兩個相同GUID的可能性很是小,但並不爲0。GUID一詞有時也專指微軟對UUID標準的實現。測試
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 }