问题
令 U1 U 1 , U2 U 2 , ⋅⋅⋅ · · · 是一个i.i.d序列,且 Ui U i ~ U U (0,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