SAS中文论坛
标题:
请教一个SAS里面用随机数的问题
[打印本页]
作者:
shiyiming
时间:
2009-9-16 22:24
标题:
请教一个SAS里面用随机数的问题
大家请看下面这段程序,请问varthree和varfour的结果是不是应该是一样的?
vartwo里面因为随机数产生的seed是大于零的,所以vartwo的结果是一定的,vartwo=34.9625。。。。
所以我想varthree和varfour的结果应该都是35呀,可是SAS运行结果说varthree=21,varfour=35,这是为什么呢???
data random4;
vartwo=ranuni(20)*50;
varthree=ceil(ranuni(20)*50);
varfour=ceil(vartwo);
run;
作者:
shiyiming
时间:
2009-9-16 22:53
标题:
Re: 请教一个SAS里面用随机数的问题
随机数在sas里有如一个长长的表。它包含了2^31-1 (?)随机数。在同一个数据步骤里,它只是从某一点开始按顺序取数而已。
[quote:2wmx9mku]data random4;
vartwo=ranuni(20)*50;*第一个数;
varthree=ceil(ranuni(20)*50);*下面的那个,第二个数;
varfour=ceil(vartwo);
run;[/quote:2wmx9mku]
你可以实验一下这个
[code:2wmx9mku]
data random4_;
vartwo=ranuni(20)*50;*第一个数应该和random4 里的VarTwo 是相同的;
varthree=ceil(ranuni(123)*50);*第二个数也和random4 里的VarThree 是相同的虽然seed已改变;
varfour=ceil(vartwo);
run;
[/code:2wmx9mku]
在loop中情况雷同。当然seed 0 除外。
作者:
shiyiming
时间:
2009-9-16 23:12
标题:
Re: 请教一个SAS里面用随机数的问题
哦,也就是说,在同一个data statement里面,每一次执行ranuni(0)的结果都不一样,所以在最一开始那个程序里面,datatwo=ranuni(0)*50 和 datathree=ceil(ranuni(0)*50) 随机数产生的就不是一样的。
明白了,谢谢楼上!
作者:
shiyiming
时间:
2009-9-16 23:16
标题:
Re: 请教一个SAS里面用随机数的问题
[quote:xj78mhb2]ranuni(0)?[/quote:xj78mhb2]
RANUNI(20)? RIGHT.也有可能碰巧是一样,尤其你取了它的 ceiling值。
欢迎光临 SAS中文论坛 (https://mysas.net/forum/)
Powered by Discuz! X3.2