程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> C#中的隨機數

C#中的隨機數

編輯:.NET實例教程
在C#中,默認的隨機數構造函數是以當前時間作為隨機數種子的,這帶來一個問題,例如有下面的生成隨機數的函數




private  int GetRandom()
...{
    Random r = new Random();
    return r.Next(0, 1000);
}
如果使用下面的方式獲取隨機數:



int[] rs = new int[10];
for(int i = 0; i < 10; i++)
    rs[i] = GetRandom();
一般情況下你獲取的10個隨機數是一模一樣的,因為時間間隔太短,用的隨機數種子都一樣嘛。對於同樣的隨機數種子,也就只好生成相同的隨機數了。

可以使用Thread.Sleep()方法延遲一下,使用每次隨機數種子不一樣,如下所示:



private int GetRandom()
...{
    Thread.Sleep(25);
    Random r = new Random();
    return r.Next(0, 1000);
}

等待的時間還不能太短,不然仍然會獲得相同的隨機數序列。

這樣的解決方法顯示不合適,因為如果生成大批量的隨機數的話,時間全部都浪費在等待上了,其實可以定義一個自增的數字作為種子,如下所示:



private static int _RandomSeed = (int)DateTime.Now.Ticks;    
private int GetRandom()
...{
    if (_RandomSeed == int.MaxValue)
        _RandomSeed = 1;

    Random r = new Random(_RandomSeet++);
    return r.Next(0, 1000);
}
這樣就能每次都獲取到不同的隨機數序列了。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved