SAS语言RANNOR函数的seed

各位好,请教一个问题。SAS语言的RANNOR(seed)函数,我把它理解成一个标准正太数据的随机生成器。但我不理解它的seed是做什么用的,没有不可以吗?另外,我输入同... 各位好,请教一个问题。
SAS语言的RANNOR(seed)函数,我把它理解成一个标准正太数据的随机生成器。但我不理解它的seed是做什么用的,没有不可以吗?
另外,我输入同一个seed的时候,出来的结果都是一样的,那这样岂不是不随机了,也就是说seed和函数值直接是一一对应的?举例如下:

Obs x rannor

1 1234567 -0.86590

2 123456 0.47265

3 12345 0.97195

4 0 1.77393

谢谢!
展开
 我来答
Jessup007
推荐于2017-10-02 · TA获得超过213个赞
知道小有建树答主
回答量:79
采纳率:0%
帮助的人:124万
展开全部

(1)首先明确一点,SAS的rannor生成的标准正态伪随机数是通过对均匀分布伪随机数(ranuni函数)做Box-Muller变换得到的。而均匀分布伪随机数是通过余同数生成器(即Lehmer迭代公式)获得的,公式如下:

其中SAS内部设置a=397204094,m=2^31-1,c=0。上述公式生成的是(0,m)上的均匀伪随机数,SAS通过除以m获得(0,1)上的均匀伪随机数。所以,由上述算法可知,seed的作用就是给出这个迭代器的初始值R0。

(2)seed值应该说跟它后面生成的随机数是对应的。至于为什么你获得的随机数是一样的,原因在于rannor函数得到一个seed后,后面生成的随机数就是根据最初seed生成的一系列伪随机数。这个通过比较下面程序的结果就明白了:

data test;
   do x=1234567,123456,12345,0;
      rannor=rannor(x);
   output;
   end;
run;
data test2;
    do i=1 to 4;
    rannor=rannor(1234567);
    output;
 end;
run;
proc print data=test;
run;
proc print data=test2;
run;

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式