可能重複:
System.Random keeps on returning the same valueC#Random.Next突然停止返回隨機值
我重構和擴大小C#基於代理的模型,以幫助一些生物學教授預測傳播疾病。模擬每一年,每個個體代理人隨機前往附近的一個人口節點,可能會傳播疾病。我是C#的新手,但是我已經閱讀了有關使用相同系統時間重新初始化時Random.Next返回相同值的潛在問題。爲了避免這種情況,我創建了一個爲每個新隨機值引用的靜態實例。
的細節:
在我的努力,以擴大我已經改變了它來計算並行每個人口節點「旅行」的信息模型。在對模型進行測試時,我注意到在新版本中,疾病不會蔓延到第一年。進一步的調查將問題縮小到節點之間的旅行。在第一年之後,所有的特工都保持不動。我檢查了負責他們旅行的功能,發現它的工作方式是創建一個所有附近節點的列表,生成一個隨機數< =列表中元素的數量,並前往listOfNearbyNodes [myRandomNumber]。
問題:
我再補充一個print語句輸出爲每次迭代隨機指數值。我發現整個模型在模擬的第一年完全符合預期,隨機數在可接受的範圍內生成。但是,在第一年結束並且模擬循環之後,完全相同的代碼將僅返回0的「隨機」索引。每個線程,每次迭代,每個節點,每個代理始終爲0.由於代理的當前節點始終列表中的第一個項目代理不再移動。我認爲這可能是系統時間種子錯誤的另一種表現,所以我嘗試了三種不同的方式來實現一個靜態隨機對象,但它沒有幫助。每次運行模擬時,第一年總能正常工作,然後Random.Next()開始只返回0。
有沒有人有想法,我應該看看下一個錯誤?謝謝!
一個簡短但完整的代碼示例重現錯誤將有助於您和SO社區幫助您診斷問題。 – LBushkin 2010-07-07 16:04:38
我問了一個我認爲是相關的問題,可能有所幫助:http://stackoverflow.com/questions/2924599/parallel-loops-and-random-produce-odd-results – Mathias 2010-07-07 16:09:17
重複的[System.Random不斷返回相同的值](http://stackoverflow.com/questions/295900/system-random-keeps-on-returning-the-same-value)。 – 2010-07-07 16:11:02