SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 525|回复: 2
打印 上一主题 下一主题

如何产生随机数0或者1

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2004-12-21 22:03:29 | 只看该作者

如何产生随机数0或者1

有一个100行数据的表,如何产生新的一列,这列数据要求是:要么是0,否则为1,而且1的个数必须是30个?能给出一个解题思路吗?
还有,是不是sas中产生的随机数只能是小数?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2004-12-22 10:00:08 | 只看该作者

回复

sas可以产生整的随机数,比如用ranbin(0,1,……)可以产生来自0-1分布的随机数,也就是取值为0,1的数,ranbin(0,1,0.3)中的0.3就是用来控制产生1的概率,但这样算出来的1并不一定是30个(28,34,……都有可能)。

data a1;
do i=1 to 100;
x=ranbin(0,1,0.3);
output;
end;
run;
proc freq;
tables x;
run;

我想也许可以产生一列均匀分布的数,排序,取前30个为1,后70个为0,说不定也行。你觉得呢?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2004-12-22 10:20:36 | 只看该作者

hoho

data base;
do i=1 to 100;
output;
end;
run;

data new;
set base;
r=normal(0);
n=_n_;
run;

proc sort;
by r;
run;

data new;
set new;
if _n_<=30 then bit=1;
else bit=0;
run;

proc sort;
by n;
run;

proc freq;
table bit;
run;
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-8 21:15 , Processed in 0.068771 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表