方法很笨,不過可行;數組
1 #include <stdio.h> 2 /** 功能:獲取一個1-n的隨機數數組,這些隨機數都互不相同 3 ** 入參:n-表示最大隨機數; *randArray -用於儲存生成的這些隨機數; 4 ** 說明:該方法效率很低;採用生成的隨機數跟前面已經生成的隨機數對比; 5 */ 6 void getRandArray(int n,int * randArray){ 7 srand((int)time(0)); 8 int i; 9 for(i=0;i<n;i++) 10 { 11 randArray[i]=rand()%n; 12 int k=0; 13 for(k=0;k<i;) 14 { 15 int cycleFlag=0; //若是有生成的隨機數與前面的相同,則將循環標誌置爲1; 16 while(randArray[i]==randArray[k]) 17 { randArray[i]=rand()%n; 18 cycleFlag=1; 19 break; 20 } 21 if(cycleFlag==0) 22 k++; 23 else 24 k=0; 25 } 26 } 27 for(i=0;i<n;i++){ 28 randArray[i]=randArray[i]+1; 29 } 30 } 31 32 int main(){ 33 int testArray[20]; 34 getRandArray(sizeof(testArray)/sizeof(int),testArray); 35 }