我想要一个问题的解决方案,我必须在 CALL 例程和 DO 循环中使用统一随机数生成器,并生成 10 个大小为 15 的样本,其中随机变量的值是 10 到 20 之间的数字. 这个 SAS 数据集应该有 150 个观测值。 因为我必须使用 Call Routine,所以我无法获得 10 到 20 之间的变量。使用以下代码后,我生成了 0 到 1 之间的值。
到目前为止我已经做到了-
DATA seven;
SEED=2120;
DO i=1 TO 15;
CALL RANUNI(SEED, x1);
CALL RANUNI(SEED, x2);
CALL RANUNI(SEED, X5);
CALL RANUNI(SEED, X6);
CALL RANUNI(SEED, X7);
CALL RANUNI(SEED, X8);
CALL RANUNI(SEED, x3);
CALL RANUNI(SEED, x4);
CALL RANUNI(SEED, x9);
CALL RANUNI(SEED, x10);
OUTPUT;
END;
PROC PRINT DATA=SEVEN NOOBS ;
RUN;
```
CALL STREAMINIT
例程与RAND()函数一起使用
data want;
call streaminit(2120);
do sample=1 to 10;
do obs=1 to 15;
rand=rand('uniform', 10, 20);
output;
end;
end;
drop obs;
run;
sample rand
1 14.767593681
1 13.535240577
1 12.954676473
1 10.660713173
1 13.894441081
1 10.843995532
... ...
10 13.716131395
10 13.261181149
10 17.789552165