投针实验
data a; do i=1 to 5000; /*实验5000次*/
pi=constant('pi');/*得出pi真实值*/ x=0.5*ranuni(0);/*产生随机数,a=1*/ y=pi*ranuni(0); if x<=0.4*sin(y) then output;
end;
proc univariate data=a noprint;
var x;
output out=out n=n;
proc print data=out;
run; data b;
set out ;
p=(2*0.8*5000)/n; proc print data=b; run;
计算定积分 0e
data a; m=0;
do i=1 to 50000;
x=ranuni(0);
y=ranuni(0);
if x<=(1/(exp(1)-1))*exp(y-1) then m=m+1; end;
proc print ; run;
data b;
set a;
p=m/50000;
s=(exp(1)-1)*p+1;
proc print ;
run; 1xdx