R学习之统计实验(七)--大于1问题(R语言编程)-----数模

问题

U 1 , U 2 · · · 是一个i.i.d序列,且 U i ~ U (0,1).令

N =min {n: i = 1 n U i >1}

用统计模拟方法求E(N)

直接R模拟(大数定律)

注意括号各种英文输入,R语言编写时候看不出明显区别

morethanone <-function(n){
  y=0
  for (i in 1:n) {
    sum=0;y[i]=0
    while (sum<=1) {
      y[i]=y[i]+1
      u<-runif(1)
      x<-floor(u*2)
      sum=sum+x
    }
  }
  rt<-c('需要次数期望'=mean(y));rt
}
morethanone(10000)

注意:编程时候如果要对向量中进行有类似y[i]=[i]+1操作,则之前必须对y[i]赋值过(y=0不算,只表示对y[1]进行过赋值和定义过y变量)!!!不然会产生na结果(表示有缺失值)

运行结果

> morethanone <-function(n){
+   y=0
+   for (i in 1:n) {
+     sum=0;y[i]=0
+     while (sum<=1) {
+       y[i]=y[i]+1
+       u<-runif(1)
+       x<-floor(u*2)
+       sum=sum+x
+     }
+   }
+   rt<-c('需要次数期望'=mean(y));rt
+ }
> morethanone(10000)
需要次数期望 
      4.0041 

DONE!!!

猜你喜欢

转载自blog.csdn.net/qq_36306781/article/details/81283767