關於C 的隨機數

2022-01-11 13:44:00 字數 1011 閱讀 7802

一直都知道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的種子不一樣

關於隨機數

昨天去網易筆試,最後一道題實在沒有時間寫了,大概題目這樣的 床前明月 疑是地 霜,舉頭望 月,低頭思故 a.光 上 明 鄉 b.上 明 鄉 光 c.鄉 上 明 光 d.光 鄉 上 明 請你編寫一函式,隨機扣掉每一句的乙個字,然後生成3個錯誤選項,乙個正確選項,選項的字必須是詩裡所缺的字。請寫出資料結...

關於隨機數

一般來說隨機數在系統中用於生成對稱金鑰,所以隨機數在安全中的地位至關重要,由於系統或者硬體的因素,生成真實的隨機數存在著效能上的問題,對於服務端來說,一次生成大量的真隨機數比較困難,實際應用中都是把真隨機數作為種子 隨機數生成演算法生成大量的隨機數,稱為偽隨機數。為了保證偽隨機數的安全性,防止被 對...

關於隨機數!

1 眾所周知,c語言的隨機函式 rand 每次執行的結果是一樣的。如下 那麼就需要設定隨機種子了,srand gettickcount 如下 2 從指定佇列取n個隨機數 借助stl的函式可以完成。templatevoid random shuffle randomaccessiterator fir...