全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2231 5
2007-11-14

假如我现在有x1 x2 x3、、、x201,201个离散数据,我想生成1000000个随机数就在前面的201个数据中取,但必须使前面201个数据取到的机会向等。

能够直接写程序生成吗?还是得先生成均匀随机数,然后再匹配呢?

哎现在才知道自己又多菜~~~!!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2007-11-16 10:36:00

  如果你的数据集 a , 有一个变量 x, x 有201 个值, 你想生成1000000个随机数就在x的201个数据中取,

ranuni( ) 就让你抽到的机会相等,point= 告诉SAS在哪抽,stop 必须用,如果你用 point=.

data b;
do samples=1 to 1000000;
obs_pointer=ceil (ranuni(0)*201);
set a  point=obs_pointer;
output;
end;
stop;
run;

proc print data=b (obs=1000);
run;            

**please try smaller sample first, before you use samples=1 to 1000000, it is too big**;

                 

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2007-11-16 11:34:00
弓虽!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2007-11-16 17:56:00

谢谢,非常感谢!我以为帖子沉下去,不会再有人回答了,意外中的惊喜。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2007-11-16 22:56:00
问一下,这个是什么意思,看不懂,谢谢obs_pointer=ceil (ranuni(0)*201);
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2007-11-23 11:16:00

obs_pointer=ceil (ranuni(0)*201) 相当于生成一个0-1 的小数后乘以201,则为0-200.9999999.., 取最近的上一位整数,为任意一个 1 到 201 的整数,告诉SAS这就是你要的某个观察值 (observation) 的行数。

obs_point=ceil(ranuni(0)*201) has the same result as:

obs_point=int(ranuni(0)*201) + 1;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群