楼主: izkb
2284 9

[原创博文] 新手求助关于生成随机数的几个问题,希望得到前辈的指导。。 [推广有奖]

  • 0关注
  • 0粉丝

小学生

7%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
32 点
帖子
5
精华
0
在线时间
3 小时
注册时间
2010-3-31
最后登录
2010-10-25

楼主
izkb 发表于 2010-3-31 12:10:44 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
DATA test;


DO I = 1 TO 10;



ID = RANUNI(0);


Age = RANUNI(0);


MaritalStatus =  RANUNI(0);


ProGroc = RANUNI(
0);


ProRest = RANUNI(0);




ProHous = RANUNI(
0);







OUTPUT;




END;



RUN;



问题如下:
1、如何在此基础上使“ID”字段生成首位字母后9位为数字的值呢?
2、如何在此基础上使“Age”字段生成在1680里的正整数呢?
3、如何在此基础上使“MaritalStatus”字段取值为“0、“1或“1.5的其中一个呢?

4、如何在此基础上使“ProGroc
ProRest”“ ProHous”这三个字段生成的值为正数且三个值的和为1呢?

二维码

扫码加我 拉你入群

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

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

关键词:生成随机数 新手求助 随机数 Marital ranuni 正整数 如何 字母

回帖推荐

soporaeternus 发表于2楼  查看完整内容

希望是对的

本帖被以下文库推荐

沙发
soporaeternus 发表于 2010-3-31 13:36:31
  1. data test;
  2.         do i=1 to 10000 by 1;
  3.                 ID=compress(byte(65+floor(ranuni(0)*26))||put(floor(ranuni(0)*1000000000),Z9.));
  4.                 Age=16+floor(ranuni(0)*65);
  5.                 MaritalStatus=floor(ranuni(0)*3);
  6.                 if MaritalStatus=0 then MaritalStatus=0;
  7.                 else if MaritalStatus=1 then MaritalStatus=1;
  8.                 else if MaritalStatus=2 then MaritalStatus=1.5;
  9.                 ProGroc=ranuni(0);
  10.                 ProRest=(1-ProGroc)*ranuni(0);
  11.                 ProHous=1-ProGroc-ProRest;
  12. /*                TEST=sum(ProGroc,ProRest,ProHous);*/
  13.                 output;
  14.         end;
  15.         drop i;
  16. run;
复制代码
希望是对的
已有 2 人评分经验 论坛币 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
crackman + 100 + 1 精彩帖子

总评分: 经验 + 3  论坛币 + 103  热心指数 + 1   查看全部评分

Let them be hard, but never unjust

藤椅
izkb 发表于 2010-3-31 13:51:29
2# soporaeternus




谢谢前辈。。我运行过,是对的。。
还想再问一下,要让ProGroc ,ProRest ,ProHous 这三个字段的值显示为保留小数点后两位,要如何修改呢??

板凳
izkb 发表于 2010-3-31 14:05:08
2# soporaeternus

还有一个问题,如何使“ProRest”字段生成的值始终大于等于“ ProHous”的值呢??

谢谢前辈~~

报纸
soporaeternus 发表于 2010-3-31 14:13:02
1 添加
  1.         format ProGroc ProRest ProHous 8.2;
复制代码
可能有些小于0.005的值表示为0
Let them be hard, but never unjust

地板
izkb 发表于 2010-3-31 14:23:15
soporaeternus 发表于 2010-3-31 14:13
1 添加
  1.         format ProGroc ProRest ProHous 8.2;
复制代码
可能有些小于0.005的值表示为0
对啊,而且三个字段的值加起来就不等于1了。。有另外可以实现的办法吗??

7
soporaeternus 发表于 2010-3-31 14:49:20
  1. data test;
  2.         do i=1 to 10000 by 1;
  3.                 ID=compress(byte(65+floor(ranuni(0)*26))||put(floor(ranuni(0)*1000000000),Z9.));
  4.                 Age=16+floor(ranuni(0)*65);
  5.                 MaritalStatus=floor(ranuni(0)*3);
  6.                 if MaritalStatus=0 then MaritalStatus=0;
  7.                 else if MaritalStatus=1 then MaritalStatus=1;
  8.                 else if MaritalStatus=2 then MaritalStatus=1.5;
  9.                 ProGroc=1+floor(ranuni(0)*99);
  10.                 ProRest=1+floor((100-ProGroc-1)*ranuni(0));
  11.                 ProHous=100-ProGroc-ProRest;
  12.                 ProGroc=ProGroc*.01;
  13.                 ProRest=ProRest*.01;
  14.                 ProHous=1-ProGroc-ProRest;
  15.                 TEST=sum(ProGroc,ProRest,ProHous);
  16.                 output;
  17.         end;
  18.         drop i;

  19. run;
复制代码
傻办法,期待好办法
已有 1 人评分学术水平 收起 理由
crackman + 1 精彩帖子

总评分: 学术水平 + 1   查看全部评分

Let them be hard, but never unjust

8
醉_清风 发表于 2010-3-31 15:47:42
byte的用法还是挺值得学习的
从来不需要想起 永远也不会忘记

9
cz851218 发表于 2010-3-31 18:30:26
learning hard!!!!!

10
izkb 发表于 2010-3-31 19:11:11
7# soporaeternus


能够实现这些要求对我现在这个状况已经很好了。。
谢谢前辈!!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-27 07:09