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一般來說比較大,所以正常使用時一...