本文目錄一覽:
- 1、C語言如何設置固定時間種子
- 2、srand(time(0));//設置時間種子是什麼意思(是c語言中的)
- 3、C語言問題,怎樣利用系統時間作為隨機數的種子?
- 4、C語言中產生隨機數利用到時間種子,什麼原理?謝謝啦。
C語言如何設置固定時間種子
計算機產生的隨機數並不是真正隨機的,所以叫
偽隨機數。
當逗種子地固定時,它產生的隨機數序列是不變的,例如產生10個數,這10個數大小是變化的,但只要用這個種子,每次產生的這10個數序列,是一模一樣的。
用
srand(time(0));
設種子,就會因時間變化,得到不同的種子,那麼隨機數序列就會變化。
time(0)
是當前時間,(精度可能是毫秒)。只要兩次跑程序啟動時間差別
超過1毫秒,兩個序列就不同了(隨機)。如果,時間差別不到1毫秒,兩個序列就沒變化。
——–
錯誤的程序:
for
(i=0;i5;i++){
srand(time(0));
//
5次的種子若不變
printf(“%d
“,rand());
//
依次取
5個序列的
第一個數
}
5個數不變化。
——————-
正確的程序:
srand(time(0));
//
設1次種子
for
(i=0;i5;i++){
printf(“%d
“,rand());
//依次取1個序列的第1到第5個隨機數
}
5個數變化
srand(time(0));//設置時間種子是什麼意思(是c語言中的)
因為系統的時間每次都不同,這樣可以避免每次產生的隨機數都相同
C語言問題,怎樣利用系統時間作為隨機數的種子?
C語言中,設置隨機數種子需要包含頭文件stdlib.h,利用系統時間需要包含頭文件time.h。
設置隨機數種子的函數原型為:void srand(unsigned int seed);
利用系統時間作為隨機數的種子代碼如下:
#include stdlib.h
#include time.h
int main(){
srand((unsigned)time(NULL)); // 利用系統時間作為隨機數的種子
return 0;
}
C語言中產生隨機數利用到時間種子,什麼原理?謝謝啦。
在C語言中取隨機數所需要的函數是:
int rand(void);
void srand (unsigned int n);
rand()函數和srand()函數被聲明在頭文件stdlib.h中,所以要使用這兩個函數必須包含該頭文件:
#include stdlib.h
rand()函數返回0到RAND_MAX之間的偽隨機數(pseudorandom)。RAND_MAX常量被定義在stdlib.h頭文件中。其值等於32767,或者更大。
srand()函數使用自變數n作為種子,用來初始化隨機數產生器。只要把相同的種子傳入srand(),然後調用rand()時,就會產生相同的隨機數序列。因此,我們可以把時間作為srand()函數的種子,就可以避免重複的發生。如果,調用rand()之前沒有先調用srand(),就和事先調用srand(1)所產生的結果一樣。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183305.html