SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 2093|回复: 7
打印 上一主题 下一主题

请教高手!如何产生整的随机数?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-10-10 09:15:40 | 只看该作者

请教高手!如何产生整的随机数?

请教高手!如何产生整的随机数?
比如说,要求产生100个正态分布 均值为100,方差为20的整的随机数。
谢谢了!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2006-10-10 13:23:51 | 只看该作者

to Norman

好象sas提供了专门的产生随机数的函数,正态分布的随机函数为normal;
用法为y=m+s*normal(seed).其中m为均值,s为标准差.
利用round()函数取整.
例如:
以100为均值,20为标准差的整的随机数可以如下:



data normal;
  retain seed 12678;
  do i=1 to 100;/*产生一百个*/
  a=round(100+20*normal(seed),1);
  output;
  end;
  drop seed i;
  run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2006-10-10 21:47:23 | 只看该作者

楼上的做法基本正确

但是,按程序得到的结果方差就成了400,
a=round(100+20*normal(seed),1); 修改成
a=round(100+sqrt(20)*normal(0),1);
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2006-10-11 13:49:18 | 只看该作者

to Norman

如果统计概率没学好,就不要随便用统计名词.
如果你用现有的计算机技术在你有生之年进行计算的情况下.我有如下观点(承认软件的随机函数是真正随机的情况下)
1.你最后得到的结果百分之九十九点九九九九........不是真正的正态分布随机数(模拟从正态分布总体中抽样,不加筛选得到100个全为整数的结果),也许只能说是随机生成数后进行筛选的一堆结果.
2.从你的字面来说,你要求的均值与方差是指的总体,所以,样本计算出的统计量是什么根本无所谓,这样,我随机生成任意的100个整数就满足条件了(因为整个实数域都在你这个正态分布下,所以任意整数都是在这个分布内的).其实我不怀好意的估计你其实想得到的是100个数,这100个数的平均数是100,这100个数的样本方差(我不知道你想用n-1还是n做分母)等于100.
3.如果我给你改一下提问的题干,其实你表达出来的意思是,请大家用计算机随机生成数(最好使用正态分布这样一个随机函数),然后经过判断把其中的100个整数选出来,使它们的均数等于100,sum((x-xbar)^2))/(n-1)等于20.
4.其实这样生成的数已经和随机正态分布没什么关系了,我们不如给它们取个名字叫"随意数"或者"随便数"好不好?不要侮辱随机和正态分布这两个词了吧.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2006-10-23 18:26:03 | 只看该作者

re

欺人太甚,你的语言也太刻薄了吧
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2006-10-25 20:34:34 | 只看该作者

to wzfgyd

他人笑我太疯颠,我笑他人看不穿.

呵呵.其实我的表达中也有不准确的地方.
将就看一下吧.
你是希望在痛苦中学到东西还是高兴的无知到死?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2006-10-26 07:32:30 | 只看该作者

@

ahuige能否让人在高兴中学到东西?善事啊。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2009-1-12 15:36:46 | 只看该作者

Re: 请教高手!如何产生整的随机数?

data norm;
do seed=1 to 100;
x=170+sqrt(20)*rannor(seed); /*x=均值为170,方差为20的正态分布随机
数*/
y=170+sqrt(20)*rannor(seed);/*注意由于是随机数,两组结果不一样,且每
次都不一样*/
output;
end;
proc print; /*在SAS输出窗口给出结果*/
run;
随机数函数-------seed 每随意赋一个值可得到给定分布的随机变量抽样值
○1 均匀分布随机数函数UNIFORM(seed)或RANuni(seed)
○2 标准正态分布随机数函数normal(seed)或RANnor(seed) ,
均值为a 方差为σ2 的正态分布随机数函数
X=a+sqrt(σ2)* RANnor(seed),
这儿,sqrt(x)= x
对数正态分布Y=exp(X)
○3 伽马分布随机数函数RANgam(seed)
○4 指数分布随机数函数RANexp(seed)
○5 三角分布随机数函数RANtri(seed)
○6 柯西分布随机数函数RANcau(seed)
○7 二项分布随机数函数RANnml(seed)
○8 泊松分布随机数函数RANpoi(seed)
○9 离散型分布随机数函数RAN (seed,p1,p2,…pn)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 07:08 , Processed in 0.136419 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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