隨機函式rand 和srand 的小感

2021-08-04 01:35:30 字數 1361 閱讀 9943

一、rand()

函式名:rand;

功能:產生0到rand_max之間的隨機整數;

函式形式:int rand(void);

對應的標頭檔案:stdlib.h

說明:rand()產生的其實是偽隨機數,它是通過線性同餘法(即小m多項式)實現的,所以這會導致你每次執行程式時都會產生相同的隨機數

# include 

# include

int main()

return 0;

}

上述**執行執行的結果都以41

18467

6334

26500

19169

15724

11478

29358

26962

24464

為了避免上述情況,srand()函式就被用來改變隨機數的初始種子。

二、srand

函式名:srand;

功能:初始化隨機數發生器(即rand)的種子;

函式形式:void srand(unsigned int seed);

對應標頭檔案:stdlib.h

說明:一般而言,srand()函式是用來初始化rand()的初始種子,

其形參seed必須為整數,一般選用time(null)的返回值。

# include 

# include

# include

int main()

return 0;

}

使用上述**後, 每次程式的執行就可以產生不同的隨機數了。

三、rand()和srand()的使用

rand()的使用建議和srand()結合一起使用以提高結果的隨機性。因為預設情況下,rand()的初始種子是確定的,而srand()可以改變初始種子。

四、rand()隨機範圍指定的方法

方法一:產生[a,b)間的隨機整數,方法:a+(rand()%(b-a)),結果含a不含b

產生[a,b]間的隨機整數,方法:a+(rand()%(b-a+1)),結果含a和b

產生(a,b]間的隨機整數,方法:a+1+(rand()%(b-a)), 結果含b不含a

總結;a+rand()%n,a為初始值,n為取值範圍

方法二:產生a到b之間的隨機整數,方法:a+b*rand()/(rand_max+1);

0~1之間的浮點數,方法:rand()/double(rand_max)

產生[a,b]以及[c,d]間的隨機數。

五、srand(time(null))的使用注意:最好不放在迴圈裡面;原因見另一篇文章time()等時間函式的使用。

產生隨機函式srand函式和rand函式的使用

srand 初始隨機數發生器 rand 隨機數發生器 當srand 的內容相同時,則在rand 後產生相同的隨機數列 所以當用time null 來進行初始隨機數,根據時間來產生隨機數,這樣就能產生不同的。呼叫方法是srand gettickcount 但是又不能在每次呼叫rand 的時候都用sra...

rand函式和srand函式生成隨機數

1.使用的時候不需要引入別的標頭檔案 2.直接使用的 rand 函式生成隨機數會產生0 rand max 32767 之間的隨機數 3.產生的隨機數其實都是偽隨機數,是開發人員事先預定好的數字順序 4.每次生成隨機數都需要乙個種子,在不使用 srand 函式的情況下計算機預設種子是不變的 5.也就是...

srand 和rand 函式詳解

c語言 c 或 int rand void void srand unsigned seed 函式說明 rand函式產生的隨機數嚴格意義講不是真正的隨機數,它裡面採用了線性同餘法計算出隨機數,該方法有個最大週期m,也就是說該方法實在一定的範圍內生成一串數字,不過這個m一般來說比較大,所以正常使用時一...