C語言偽隨機數的生成

2021-06-18 12:27:18 字數 831 閱讀 2506

在stdlib.h中,有兩個函式與偽隨機數的生成有關:srand和rand。c語言中,隨機數表有很多列,srand函式是根據其引數(unsigned型別)來獲得乙個種子(seed),根據種子來設定從哪一列開始取隨機數。rand無引數,返回乙個相應的隨機數。種子相同,則從同一列隨機數中選取,rand每次選取之後會自動選取下乙個隨機數。以上的所說十分之抽象,但是一下程式可以清楚地解釋其原理。

#include #include int main(void)

return 0;

}

一下是執行結果:

可見,如果srand設定的種子相同,則會從同一列隨機數中選取。那麼,究竟如何做到生成真正不同的隨機數呢?

問題的關鍵在於種子的選取。我們的目的是要在不同的時間生成不同的隨機數。因此,只要有乙個只和時間有關的數,將其傳遞給srand,就可以達到目的了。這樣的函式位於time.h標頭檔案中。函式名即為time。呼叫time會返回乙個和時間有關的整數,具體的用法如下:

/*

* rand2.c

* to create a list of random numbers.

*/ #include #include #include #define maxnum 100

int main(void)

執行效果如下:

生成偽隨機數

真正的隨機數只能自然生成,所以我們人工得到的隨機數被稱為偽隨機數。使用中的rand 函式可以生成0 rand max之間的隨機整數.rand 函式使用乙個起始的種子值生成一系列數字,對於乙個特定的種子產生的序列數永遠是相同的。如果使用rand 函式只使用乙個種子值,即預設的種子值,就會使得序列數是有...

C語言的偽隨機數

一直想好好的系統的學習一下c語言的偽隨機數,今天終於逮到機會了 因此上述的srand unsigned time null 是利用系統時間來初始化隨機種子的。最後來介紹一下重要的乙個函式rand rand函式 標頭檔案 定義函式 int rand void 函式功能 產生隨機數 函式說明 因為ran...

隨機數生成 偽隨機數和真隨機數

c語言隨機數的生成,很隨機,又不隨機,比如像下面的程式 c語言生成隨機數的函式在stdlib.h庫中 include includeint main return 0 上面的 經過執行生成了 41 18467 6334 26500但是無論執行多好遍結果都是一樣的,隨機數並不隨機。這是因為rand 函...