问一个随机数的问题
使用rand()函数产生50个10-99的互不相同的随机整数 要怎么弄 ?最主要是这个互不相同不会弄,求解释
#include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int irand[52]; int n,i,temp; srand(time(NULL)); for(i=0;i<50;i++) { temp=rand()%90+10; printf("%3d",temp);//生成随机数输出 for(n=0;n<=i;n++) { if(temp==irand[n])//跟以有数相同重新生成 { i--; break; } else if(n==i) irand[i]=temp; } } for(i=0;i<50;i++) //没排序时情况 { printf("%3d",irand[i]); if((i+1)%10==0) printf("\n"); } printf("\n"); for(i=0;i<49;i++)//排序 { for(n=i+1;n<50;n++) { if(irand[i] > irand[n]) { temp=irand[i]; irand[i]=irand[n]; irand[n]=temp; } } } for(i=0;i<50;i++)//排序后结果 { printf("%3d",irand[i]); if((i+1)%10==0) printf("\n"); } return 0; }
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 50 int a[N]; void fun(int n) { if (!n) return; int i = n; a[n - 1] = rand() % 90 + 10; while (i < N) { if(a[n - 1] == a[i]) { n++; break; } i++; } fun(n - 1); } void Output() { int i; for (i = 0;i < N;i++) printf("%d\t", a[i]); printf("\n"); } int main() { srand(time(0)); fun(N); Output(); return 1; }