關於c 隨機數的小問題

2021-07-02 23:47:27 字數 1247 閱讀 2878

c++隨機數在c++應用廣泛,如何定義rand()以及srand()在這裡我就不說了,在這裡,我記下我在隨機數應用中遇到的小問題

先看乙個簡單的例子:

#include using namespace std;

int main()

return 0;

}

很容易得到結果:

16807

282475249

1622650073

984943658

1144108930

470211272

101027544

1457850878

1458777923

2007237709

同時,無論你做多少次試驗,結果總是相同的,如果我們希望讓他每次都不相同,那麼,我們會選擇時間作為種子

**如下:

#include #include #include using namespace std;

int main()

return 0;

}

這樣我們可以很輕鬆得到不同的隨機數,但有時因為人們大意,或是在乙個很大的專案工程中,將這句話放入了迴圈裡面

**如下:

#include #include #include using namespace std;

int main()

return 0;

}

那麼問題出現了,我們得到的所有隨機數都會是同乙個數。

這是問什麼呢?原因很簡單,當我們將種子時間放入迴圈內部,相當於每次迴圈都為種子時間進行初始化,由於執行速度較快,我們每次訓環時間幾乎保持不變,因此選取的時間種子應該是相同的,因此它每次初始化應該說是相同的,這樣我們便得出同乙個結果迴圈了10次,而當我們放在了迴圈外面,我們的時間種子初始化了僅僅這一次,所以rand()函式可以得到十個不同的結果,同時不同時間執行種子是不同的,故我們每次得到的結果並不會像第乙個示例中那樣,會得到不同的結果。

以上僅供參考。

關於C 的隨機數

一直都知道random隨機數可能出現相同的情況,但是一直沒具體看為什麼,網上一看又是一大堆例子給你出來,一點也不清晰,今天看msdn記錄一下,msdn是講的真的清楚.例項化隨機數生成器 通過向random類建構函式提供種子值 偽隨機數生成演算法的起始值 來例項化隨機數生成器。可以顯式或隱式提供種子值...

關於隨機數生產問題

其實演算法是一種積累,看多了形成一種習慣,問題來了也就有感覺了。千萬不要以為不看書就能把演算法做出了才算聰明。那叫白痴。阿里的一道隨機數生成的題目,這裡進行一下解釋 給定了rand7,如何生成rand3?乙個非常直觀的思路,就是不斷的呼叫rand7,直到它產生1 3之間的數,然後返回。如下 如果有同...

關於隨機數

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