我想采用 Rick Wicklin 的宏(https://blogs.sas.com/content/iml/2015/10/05/random-integers-sas.html)生成随机数并将其转换为 FCMP 函数。FCMP 函数在使用%sysfunc(randbetween(1,100));
或通过数据步骤调用时按预期工作,但proc sql
它始终返回值 1。
proc fcmp outlib=work.funcs.funcs;
function randbetween(min,max);
return ( min + floor( ( 1 + max - min ) * rand("uniform") ) );
endsub;
run;
工作示例:
data example;
do cnt=1 to 1000;
x = randbetween(1,100);
output;
end;
run;
损坏的 SQL 示例:
proc sql noprint;
create table have as
select randbetween(1,100)
from sashelp.class
;
quit;
这是一个错误吗?还是我误用了什么?
SAS 版本为 SAS9.4TS1M5。视窗 10x64。
编辑: 当我将公式直接代入 SQL 语句时,它按预期工作,因此它似乎与对rand("uniform")
.