生成随机数据程序
分享一个生成随机数据程序,适合为练习排序生成测试数据等,附件中含有exe程序 ,源码以及简要使用说明。以下是代码,欢迎讨论及提出改进意见程序代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <time.h> #define N 100 #define RAND_MIN 0 int f(char* str,char* argv[],int n ,int*m) { int i =0 ; char *p =NULL ; while(1) { if(i>=n)return -1 ; p=strstr(argv[i],str); if(p && (i+1<n)) { *m=atoi(argv[i+1]) ; return 0 ; } ++i; } } int ff(char* argv[],int n ,int*m) { int i =0 ; char *p =NULL ; while(1) { if(i>=n)return -1 ; p=strchr(argv[i],'/'); if(p ) { i+=2 ; } else { *m=atoi(argv[i]) ; return 0 ; } } } int main(int argc,char* argv[]) { int i , n , min , max , line; unsigned int big ; double x ; n=N ; min=RAND_MIN ; max=RAND_MAX ; if(argc>1) { ff(argv+1,argc-1,&n) ; f("/min",argv+1,argc-1 ,&min) ; f("/max",argv+1,argc-1 ,&max) ; } printf("%d\n",n); srand(time(0)) ; for(i=0 ; i <n ; ++i) { unsigned int big =(unsigned int)(max-min) ; int s=0 ,k = 1 ; while(big!=0) { unsigned int big1=big%(RAND_MAX+1) ; big/=(RAND_MAX+1) ; x = rand()/(RAND_MAX+1.0) ; s+= (int)(x * (big1+1.0))*k ; k*=(RAND_MAX+1) ; } printf("%d ",s+min); } printf("\n"); return 0 ; }
rand.rar
(51.51 KB)