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個錯誤選項,乙個正確選項,選項的字必須是詩裡所缺的字。請寫出資料結...