- %MACRO samp(n,m,t);
- data final;
- retain t;
- array x x1-x&m;
- do t=1 to &t by 1;
- m=&m;
- do n=1 to &n by 1;
- r=ranuni(123);
- if r<=m/(&n-n+1) then do;
- x[&m-m+1]=n;
- m=m-1;
- end;
- end;
- output;
- end;
- drop m n r;
- run;
- %MEND samp;
- %samp(30,17,1000000);
效率4秒多一点
希望对你有帮助