這個有點兒坑,每次結果都是一樣的,說好的隨機根本不隨機。其實 隨機數本身也是通過計算得到的,每一次都是通過隨機數種子計算得到的。如果隨機數種子不同那麼計算出來的隨機數就不同,而產生隨機數種子的函數同樣在 stdlib.h 裡面,函數是:srand().
【此部分代碼在function1()裡面】
我們需要給隨機數種子每次以不同的值,然後就能得到不同的隨機數了,但是還有一個弊端。種子怎麼才能得到不同的值。那我們知道時間每時每刻都不相同,所以如果能用時間給到隨機數種子裡面,那麼每次得到的結果必然是不相同的。
得到
這個結果就比較好了。
下面源代碼。
#include <iostream> #include <stdlib.h> #include <time.h> /** rand() 來自 stdlib.h 文件 */ void function1(void); void function2(void); //int[] makeArray(int array[]);//怎麼返回int類型的數組? void display(int array[]); int main() { function1(); function2(); return 0; } void function2(void){ int array[10]; int randomseed = (int) time(NULL);//包含在time.h裡面 //返回當前時間,是time類型需要強制類型轉換成int類型。 srand(randomseed); for(int i=0;i<10;i++){ array[i]=rand(); } display(array); } void function1(void){ //我們利用 rand() 來產生隨機數: int array[10]; for(int i=0;i<10;i++){ array[i]=rand(); } display(array); } void display(int array[]){ for(int i=0;i<10;i++){ printf("array[i]=%d ",array[i]); if((i+1)%5==0){ printf("\n"); } } }