x<-rpois(1000,10)/10-1;xm<-mean(x)
my.pi<-1/2/dnorm(xm)^2;my.pi
3.142253
你用到了dnorm(),实际上是绕了一个圈,把dnorm()中的pi 套出来,那还不如直接一点:
> x=rnorm(1)
> x
[1] -1.218260
> y=dnorm(x)
> y
[1] 0.1899457
> 0.5*(exp(-x^2/2)/y)^2
[1] 3.141593
这里精度不高的一个原因在于你用泊松分布拟合正态分布,然后再去求正态密度中的pi,产生误差。不过从教学的角度讲,可能老师也想让同学温习一下几个分布之间的关系。但如果这样的话,也可以从均匀分布变换到标准正态分布,如:
for(i in 1:10000){
+ a
=sum(runif(12))-6}
可以从各种相关的分布于正态分布建立联系。
因此,请楼主把老师布置的要求仔细说明一下,否则总有些偏差。