楼主: appleqiuqiu
3766 8

[问答] 【帮忙查看程序】SAS iml模块生成随机数矩阵 [推广有奖]

  • 0关注
  • 1粉丝

已卖:773份资源

副教授

41%

还不是VIP/贵宾

-

威望
0
论坛币
3666 个
通用积分
2.9200
学术水平
2 点
热心指数
2 点
信用等级
2 点
经验
4191 点
帖子
133
精华
0
在线时间
1514 小时
注册时间
2010-4-27
最后登录
2022-6-22

楼主
appleqiuqiu 发表于 2013-7-12 20:16:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我现在要做这样一件事情:

1、生成一个10*20的随机数矩阵,服从(0,1)之间的均匀分布
2、对这个矩阵做这样一个处理:使每一行的pattern不同,举个例子,我要让第一行的第1、2列数字比较大,其余列数字比较小,(比如第一行第1、2列数字为0.9,0.8,其余列为比较小,零点零几之类的),第二行的第3、4列数字比较大,其余列比较小;第三行第5、6列数字比较大,其余列比较小。。。。。。。如果画成散点图来看的话,在每一行的某个位置有个波峰。(PS:把这些随机数当成概率值来理解比较容易了)。

我用了sas里iml模块外加随机数函数写了一下程序,但是log日志总报错,说“ERROR: (execution) Character argument should be numeric.”请各位大侠指点一下,看看我这code写的是否有问题。。
  1. proc iml;
  2. seed=j(10,20,1);
  3. prob=uniform(seed);
  4. do k=1 to 10;
  5. k1=2*(k-1)+1;
  6. k2=k1+1;
  7. prob1=prob[{k},{k1 k2}]+10;/*加10是为了突出这个位置,数字可以自定义*/
  8. prob2=prob1/20;/*由于这里表征的是概率,要小于1,所以我除以了一个数*/
  9. end;
  10. print prob2;
  11. quit;
复制代码




二维码

扫码加我 拉你入群

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

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

关键词:生成随机数 随机数 EXECUTION Character argument 程序

沙发
appleqiuqiu 发表于 2013-7-12 20:27:28
自己顶一下!

藤椅
ziyenano 发表于 2013-7-12 20:44:52
prob1=prob[{k},{k1 k2}]+10;
这行改成
prob1=prob[k,k1||k2]+10;

板凳
appleqiuqiu 发表于 2013-7-12 20:52:26
ziyenano 发表于 2013-7-12 20:44
prob1=prob[{k},{k1 k2}]+10;
这行改成
prob1=prob[k,k1||k2]+10;
是能运行了,可是出来的结果不对。。。只有一行两列。。。应该是10行20列啊。。。。

报纸
ziyenano 发表于 2013-7-12 20:54:32
你把print放到循环里面去,或者建立一个空矩阵,将每次循环的结果保存起来

地板
appleqiuqiu 发表于 2013-7-12 20:59:23
ziyenano 发表于 2013-7-12 20:54
你把print放到循环里面去,或者建立一个空矩阵,将每次循环的结果保存起来
把print放到循环里还是不对啊,出来的是这样的,我截图给你 飞信截图20130712204706.jpg
最后应该是10*20的矩阵,现在是10*2,感觉是不是那个||或哪里出问题了。。。我也是刚学iml

7
ziyenano 发表于 2013-7-12 21:10:28
appleqiuqiu 发表于 2013-7-12 20:59
把print放到循环里还是不对啊,出来的是这样的,我截图给你
最后应该是10*20的矩阵,现在是10*2,感觉是不 ...
prob1=prob[k,k1||k2]+10;
prob2=prob1/20;
改成:
prob=prob[k,k1||k2]+10;
prob=prob/20;
循环外面写
print prob;

8
appleqiuqiu 发表于 2013-7-12 21:19:05
ziyenano 发表于 2013-7-12 21:10
prob1=prob[k,k1||k2]+10;
prob2=prob1/20;
改成:
谢谢!搞定了O(∩_∩)O~

9
yuerqieqie 发表于 2013-7-12 21:39:17
或者改成 prob1=prob[k, k1:k2] +10;
原来的引用方式{k}和{k1, k2}相当于建立了character array with value k  和c haracter array with value k1, k2

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

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