全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2927 5
2017-08-29
rm(list=ls())
num.sample=10000
for(N in 1000:10000){

  aa=0

  for(i in 1:num.sample){  

    y1 = mean(rnorm(N,0,1))

    y2=mean( rnorm(N,0.2,1))


    if (abs(y1-y2)<0.23 )   
    {
      aa=aa+1
    }

    bb=aa/num.sample
  }
  if (bb > 0.8) break
}
N

二维码

扫码加我 拉你入群

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

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

全部回复
2017-8-30 08:24:09
我看到一点:譬如你的rnorm()的随机模拟函数,可以在循环之外先完成的。 这是因为rnorm()可以一次生成很多随机数;如果总共5000个均值和标准差相同的随机数,调用1次rnorm()一起生成,应该比调用5次rnorm()分别产生,要快。
二维码

扫码加我 拉你入群

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

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

2017-8-30 11:27:05
不对,我刚才想拐了。
二维码

扫码加我 拉你入群

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

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

2017-8-30 16:10:39
hyu9910 发表于 2017-8-30 08:24
我看到一点:譬如你的rnorm()的随机模拟函数,可以在循环之外先完成的。 这是因为rnorm()可以一次生成很多随 ...
谢谢你,我试试。只不过我在产生随机数的时候,个数是随着循环体内的N变化的。
二维码

扫码加我 拉你入群

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

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

2017-8-30 16:49:55
我试过用C++编写了一个函数,但是效果仍然不理想,应该是反复生成大量随机数,又要重复分配内存空间造成的耗时,于是我想到用完全的R语言的向量化的思维来达到同样的效果:
复制代码
返回值的概率分布的期望和方差应该与你的代码返回值的期望和方差是一致的。
另,以下C++版的循环仅作为我自己备查之用:
复制代码

二维码

扫码加我 拉你入群

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

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

2017-8-31 15:02:59
KingJean 发表于 2017-8-30 16:10
谢谢你,我试试。只不过我在产生随机数的时候,个数是随着循环体内的N变化的。
没关系的吧。 你的N的总数看来是确定的。 而且,你只有2类(均值,标准差)的正态分布的参数组合。

这里牵涉到R和MATLAB编程的一大特点,就是系统提供的矩阵运算的函数要尽量利用,那么避免自己写很多循环。 这样能够达到加速运行的效果。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群