Voici une macro nommee tasr permettant de realiser un tirage aleatoire sans remise. Ses parametres sont : entree : table a fournir en entree sortie : table creee en sortie nb : nombre d'observations a tirer au sort %macro tasr(libref=,entree=,sortie=,nb=); data &libref..&sortie (drop=i j count); count=0; array obsnum(&nb) _temporary_; do i=1 to &nb; redo: select=ceil(ranuni(12345)*n); set &libref..&entree point=select nobs=n; do j=1 to count; if obsnum(j)=select then goto redo; end; position=select; count=count+1; obsnum(count)=select; output; end; stop; set &libref..&entree; run; %mend; Voici comment utiliser cette macro afin d'effectuer un tirage aléatoire de 300 observations dans une table de 500 observations nommee donnees : data donnees (drop=var); do var=1 to 500; x=round(ranuni(1251)*100); output; end; run; %tasr(libref=work,entree=donnees,sortie=donnees2,nb=300); Voici maintenant comment realiser un tirage aleatoire avec remise dans une table d'exemple de 100 observations nommee test : data test; do a=100 to 200; output; end; run; data ech1 (drop=i); do i=1 to 20; select=ceil(ranuni(1564)*n); set test point=select nobs=n; position=select; output; end; stop; run; Voici comment generer 20 realisations independantes d'une variable aleatoire normale centree reduite : data select(drop=i); do i=1 to 20; x=normal(1515); output; end; run;