2024年4月26日发(作者:)
SAS产生随机数的方法 随机数 函数
和CALL 子程序
原文地址:SAS产生随机数的方法:随机数函数和CALL子程序作
者:supersasmacro运用SAS进行MonteCarlo蒙特卡罗模拟
(第四弹):
SAS产生随机数的方法:随机数函数和CALL子程序
本文未经作者同意严禁转载
1随机数函数产生随机数序列
随机数函数产生随机数序列的语法:var=name(seed,arg),我们在前面的文
章里使用的都是此类方法,变量var记录了由随机数种子为seed的随机函数
name产生的一个随机数。我们举两个例子来深入说明随机数函数产生随机数序
列的原理。
程序1:
DATATEMP1(DROP=I);
DOI=1TO10;
RUNI=RANUNI(123);
SEED=RUNI*(2*31-1);
OUTPUT;
END;
RUN;
PROCPRINTDATA=TEMP1;
RUN;
程序2:
DATATEMP2(DROP=I);
DOI=1TO5;
RUNI1=RANUNI(123);
RUNI2=RANUNI(456);*这里我们虽然指定了另一个随机数种子的值,但其实
并不起作用;
OUTPUT;
END;
RUN;
PROCPRINTDATA=TEMP2;
RUN;
程序1的结果:
程序2的结果:
将程序1的结果和程序2的结果进行比较,程序2中的RUNI1是程序1中
的RUNI的第1,3,5,7,9条数据,而程序2中的RUNI2是程序1中的RUNI的第
2,4,6,8,10条数据。我们可以看到,虽然RUNI2=RANUNI(456);,但是这条语句
中的随机数种子456并没有起作用。
RANUNI等随机函数的值产生后,SAS系统会隐含地将其转化为(0,1)的区间
内,如果要看到这些随机数序列原始的值,可以通过程序1中的
SEED=RUNI*(2*31-1);语句,结果如程序1输出结果中的seed所示。
2CALL子程序产生随机数序列
发布评论