.net中使用隨機函數

來源:互聯網
上載者:User
原文:http://forum.byr.edu.cn/wForum/disparticle.php?boardName=dotNET&ID=980
隨機函數產生的隨機數總是一個值,而單步跟蹤的時候又能夠出現隨機的效果,一直很奇怪。代碼大致如下所示:
                 for(int i=0;i<10;i++)
                 {
                       Random random=new Random();
                       int index=random.Next(10);
                 }
    .net的隨機函數與隨機數種子seed有關,也就是傳給Random建構函式的參數。如上面代碼所示,在構造Random 時採用了預設建構函式,系統就會使用當前系統時間作為隨機數種子,然而電腦運行上述代碼非常的快,系統時間沒有發生變化,也就是說隨機數種子不會變,這 樣出來得隨機數就是一樣的了。
     解決這個問題的方法就是,每次迴圈要給Random建構函式傳遞一個不同的種子。網上給的比較簡單的方法是,每次產生一個新的Guid對象,然後用它的散列值(每個Guid對象的散列值是不同的)作為建構函式的參數,如下所示:
                for(int i=0;i<10;i++)
                 {
                       Random random=new Random(Guid.NewGuid().GetHashCode());
                       int index=random.Next(10);
                 }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.