C# Random循環生成隨機數重復問題解決方案
1.當我們通過Random生成隨機數時,習慣的寫法如下:
int a=new Random().Next(0,100);
然后生成一個數據數沒有任何問題,但是代碼修改如下
for(int i=0;i<1000;i++){ Console.WriteLine(new Random().Next(0,100)); }
問題:你會發現生成的隨機數居然完全一樣。腫么辦呢?
2.解決:之所以會出現這樣的情況是因為C#生成隨機數和計算的時間有關系,如果生成太快就會造成這個問題
解決方案1:
暫停一定時間
for(int i=0;i<1000;i++){ Console.WriteLine(new Random().Next(0,100)); Thread.Sleep(100); }
解決方案2:
for(int i=0;i<1000;i++){ Console.WriteLine(new Random(Guid.NewGuid().GetHashCode()).Next(0,100)); }
結語:個人更偏向於第二種解決方案,因為第一種明顯降低了執行效率