1:如果只要產生隨機數而不需要設定范圍的話,只要用rand()就行了,rand()會返回一個隨機數的值,范圍在RAND_MAX之間. RAND_MAX定義在stdlib.h,它的值為2147483647. 例如: #include<stdio.h> #include<stdlib.h> void main() { int i ; for(int i=0;i<10;i+) printf("%d\n",rand()); } (2) 如果你要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數: 例如:隨機生成10個0~100的數: #include<stdio.h> #include<stdlib.h> #define random(x) (rand()%x) void main() { int x; for( x=0;x<10;x++) printf("%d\n",random(100)); } (3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣。這與srand()函數有關。 srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子 (seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。 srand()函數定義 : void srand (unsigned int seed); 通常可以利用geypid()或time(0)的返回值來當做seed 如果你用time(0)的話,要加入頭文件#include<time.h> 例如: #include<stdio.h> #include<stdlib.h> #include<time.h> #define random(x) (rand()%x) void main() { int x; srand((int)time(0)); for( x=0;x<10;x++) printf("%d\n",random(100)); }