2012-05-15 106 views
0

可能重複:
class System.Random .. why not static?爲什麼`Random`默認不包含靜態的`Next`方法?

"Generated random numbers are always equal"繼,我不知道;

爲什麼Random類不爲Next公開一個靜態方法,並帶有可選的最小值和最大值?這可能聽起來像一個愚蠢的問題,但根據經驗,10次中有9次我想生成一個隨機數,而不必明確指定種子?我是否錯過了一些明顯的東西,是否有這個原因?或者實際上有一種方法可以解釋我還沒有發現?

+0

已經解答 - 請參閱http://stackoverflow.com/questions/4933823/class-system-random-why-not-static – dash

回答

6

這可能聽起來像一個愚蠢的問題,但從經驗中,9次出10我想生成一個隨機數,而不必明確指定種子?

雖然你不應該使用靜態方法。你應該在確保保持狀態的東西上使用實例方法。如果每次呼叫Next時創建一個新實例Random,如果連續多次呼叫該號碼,則會以重複的號碼結束。

您應該將「隨機數字源」視爲任何其他的IMO依賴項,以便可測試。當然,如果你沒有使用依賴注入,那麼這個論證可能不適用......但是你還有其他問題。

您可能需要每個線程有一個Random實例,因爲Random不是線程安全的。

查看我的​​瞭解更多詳細信息和代碼示例。

+0

謝謝,還有不錯的文章......我可能不得不購買你的書,哈哈。 – Richard

相關問題