方法很笨,不过可行;
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 }