楼主: snowave926
2398 4

R随机数的产生 [推广有奖]

  • 0关注
  • 1粉丝

已卖:477份资源

博士生

63%

还不是VIP/贵宾

-

威望
0
论坛币
3427 个
通用积分
5.9334
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
6000 点
帖子
254
精华
0
在线时间
309 小时
注册时间
2010-1-9
最后登录
2025-12-27

楼主
snowave926 发表于 2010-4-11 01:21:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我作了一个rnorm(1000,100,100),需要这1000个数字都是大于0的,请问怎么产生?谢谢
二维码

扫码加我 拉你入群

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

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

关键词:随机数 Norm ORM NOR 随机数

沙发
ruiqwy 发表于 2010-4-11 14:54:48
你这个是属于半正态分布的上半部分,abs(rnorm())?
R is the second language for me!Using R is standing on the shoulders of giants!   Let\'s use R together!

藤椅
alphastatist 发表于 2010-4-11 16:30:34
你先弄清楚自己要产生的随机数的分布,然后再按随机数产生办法产生即可。
很可能如二楼所说你要得是截断正态分布。
http://www.pinggu.org/bbs/images/logo2.gif[/IMG][/URL]

板凳
snakepointid 发表于 2015-7-2 13:21:49
截断的正太分布从某种意义已经不服从正太分布了。我写了一个算法得到的数据是正太分布。
a<-rnorm(1000,100,100)
while(length(which(a<0))>0){
  a[which(a<0)]<-rnorm(length(which(a<0)),100,100)
}
shapiro.test(a)
思路:
首先生存1000个服从u=100,sd=100的正态分布数列
然后找到那些小于0的,重新生成数目一样的正态分布数列。
用while重复这个过程,直到没有小于0的
最后用shapiro.test()检验通过。

报纸
snakepointid 发表于 2015-7-2 13:27:57
不好意思,不管是abs()方法和我那个循环算法,正态性检验都没有通过。
估计只能先生成数列,然后每个数值加上数列中最小值和0 的差
a<-rnorm(1000,100,100)
a<-a+abs(min(a))

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

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