關於C#的隨機數


一直都知道random隨機數可能出現相同的情況,但是一直沒具體看為什么,網上一看又是一大堆例子給你出來,一點也不清晰,今天看msdn記錄一下,msdn是講的真的清楚.

實例化隨機數生成器
通過向Random類構造函數提供種子值(偽隨機數生成算法的起始值)來實例化隨機數生成器。 可以顯式或隱式提供種子值:
Random(Int32)構造函數使用您提供的顯式種子值。
Random()構造函數使用系統時鍾提供種子值。 這是實例化隨機數生成器最常見的方法。
如果對單獨Random的對象使用相同的種子,則它們將生成相同的隨機數字序列。 這對於創建處理隨機值的測試套件或用於重放從隨機數派生其數據的游戲很有用。 但請注意Random ,在不同版本的 .NET Framework 下運行的進程中的對象可能返回不同序列的隨機數字,即使它們是用相同的種子值實例化的,也是如此。
若要生成不同的隨機數序列,可以使種子值依賴於時間,從而使用的每個新實例Random生成不同的序列。 參數化Random(Int32)構造函數可以根據Int32當前時間中的計時周期數來獲取值,而無參數Random()構造函數使用系統時鍾生成其種子值。 ·但是,僅在 .NET Framework 上,由於時鍾具有有限的分辨率,因此使用無參數構造函數來Random連續創建不同的對象將創建隨機生成相同序列的隨機數生成器小數·. 下面的示例演示如何在Random .NET Framework 應用程序中連續實例化的兩個對象生成相同的隨機數序列。 在大多數 Windows 系統上Random ,在15毫秒內創建的對象有可能具有相同的種子值。

所以想生成隨機數,無論用幾個random,只要保證

1 你的隨機種子不同
2 產生隨機數的時間間隔>15ms就能產生隨機數

這兩個條件滿足一個就行

鑒於官方提出多個random會產生額外開銷,只建議生成一個randow就好了

總結:想生成隨機的一堆數

1 一個random(不必要)
2 產生隨機數的間隔>15ms

或者

1 多個ranmdom
2 每個random的種子不一樣


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM