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;

