*:利用ziggurat算法和生成的随机数来生成服从标准正态分布的随机数;
%macro ran(k)
data range&k(keep=r ran);
set want nobs=obs;
array lags{&k};
lags(1)=lag(r);
do i=2 to &k.;
lags(i)=lag(lags(i-1));
end;
if _n_ ge &k. and _n_ le obs-&k. then do;
ran=sum(of lag:)-&k./2;
output;
end;
run;
%mend;
%ran(6);[/code:3fcs8dw2]
其中宏ran出错,结果如下:
WARNING: 没有解析宏 RAN 的调用。
ERROR 180-322: 语句无效或未按正确顺序使用。
1192 %ran(6);
-
180
而我单独把宏ran里的内容取出来,并单独给宏变量k赋个值来测试又通过,这是啥原因呢,请高手们帮忙解决下这个问题,谢谢...
%let k=12;
data range&k(keep=r ran);
set want nobs=obs;
array lags{&k};
lags(1)=lag(r);
do i=2 to &k.;
lags(i)=lag(lags(i-1));
end;
if _n_ ge &k. and _n_ le obs-&k. then do;
ran=sum(of lag:)-&k./2;
output;
end;
run;作者: shiyiming 时间: 2011-11-18 09:51 标题: Re: 请高手帮忙查找下出现这类问题原因呢,谢谢! 不仔细呀!不仔细....
[quote:11jigk77]%macro ran(k)
[/quote:11jigk77]后面不是少了个分号么...