srand函式與rand函式的使用方法及區別

2021-08-05 19:13:16 字數 1146 閱讀 4883

rand函式

函式標頭檔案:stdlib.h

函式定義:int rand(void)

函式功能:產生乙個隨機數

函式說明:rand函式產生的隨機數嚴格意義講不是真正的隨機數,它裡面採用了線性同餘法計算出隨機數,所謂的線性同語法簡單來說就是使用了乙個公式,該方法有個最大週期m,也就是說該方法實在一定的範圍內生成一串數字,不過這個m一般來說比較大,所以正常使用時一般看起來就是產生了隨機的數,不過這個函式由於預設種子是1,所以每次產生的隨機數都是相同的,也就是說每次執行程式,產生的隨機數都是一樣的,失去了部分隨機的意義,所以一般會配合srand函式使用。

返回值: 返回0至rand_max之間的隨機整數值,rand_max的範圍最小在32767之間。若用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。且0-rand_max每個數字被選中的機率是相同的。

srand函式

函式標頭檔案:stdlib.h

函式定義:void srand(unsigned int seed)

函式功能:設定隨機數種子

函式說明:通常可以用getpid()(獲取當前程序的程序識別碼)或者time(null)(獲取當前系統的時間資訊)來充當種子,保持每次執行時種子是不一樣的。

下面是**示例:

#include #include #include void rand1_10(int *a)  //使用rand(void)函式產生隨機數1-10

}void srand1_10(int *a) //使用srand(unsigned int seed)函式產生隨機數1-10

}void printarr(int *a, int n)

printf ("\n");

}int main()

;int b[10] = ;

rand1_10(a);

printarr(a, 10);

srand1_10(b);

printarr(b, 10);

return 0;

}

可以看到第一次執行和第二次執行的rand隨機數相同,而是用了time(null)種子的srand產生隨機數是不一樣的。

srand 以及rand 函式用法

srand 就是給rand 提供種子seed 如果srand每次輸入的數值是一樣的,那麼每次執行產生的隨機數也是一樣的,srand n for 10 rand 也就是說,以乙個固定的數值作為種子是乙個缺點。通常的做法是 以這樣一句 srand unsigned time null 來取代,這樣將使得...

srand 以及rand 函式用法

srand 就是給rand 提供種子seed 如果srand每次輸入的數值是一樣的,那麼每次執行產生的隨機數也是一樣的,srand n for 10 rand 也就是說,以乙個固定的數值作為種子是乙個缺點。通常的做法是 以這樣一句 srand unsigned time null srand uns...

srand 和rand 函式詳解

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