SAS/IML 似乎有能力重置它的随机数流(文档链接)。
SAS 数据步骤中的随机数例程是否有类似的功能?
根据这篇文章,似乎streaminit
在单个数据步中忽略了后续调用。
例如,下面的代码为每一行生成不同的随机数:
data want;
do i = 1 to 2;
call streaminit(123); * <-- WANT THIS TO RESET THE STREAM;
ran1 = rand('uniform');
ran2 = rand('uniform');
ran3 = rand('uniform');
put _all_;
output;
end;
run;
输出:
i=1 ran1=0.5817000773 ran2=0.0356216603 ran3=0.0781806207
i=2 ran1=0.3878454913 ran2=0.3291709244 ran3=0.3615948586
我希望输出为:
i=1 ran1=0.5817000773 ran2=0.0356216603 ran3=0.0781806207
i=2 ran1=0.5817000773 ran2=0.0356216603 ran3=0.0781806207