R學習之統計實驗(五)--趕火車問題(R語言編程)-----數模

問題

問題一列火車從A站開往B站,某人每天趕往B站趕火車.他己瞭解到火車從A站到B站的運行時間是服從均值爲30分鐘.標準差爲2分鐘的 正態分佈.火車大約13點離開A站.此人大約13:30到達B站.火車離開A站 的時刻及概率和此人到達B站的時刻及率如表所示.用模擬實驗的方法 求他趕上火車的概率.
這裏寫圖片描述
這裏寫圖片描述


直接R模擬(大數定律)

train<-function(n){
  m=0
  for(i in 1:n){
    x<-rnorm(1,30,2)
    p1=c(0.7,0.2,0.1);p2=c(0.3,0.4,0.2,0.1)
    y<-sample(c(0,5,10),1,p=p1)
    z<-sample(c(28,30,32,34),1,p=p2)
    if((x+y)>z){m=m+1}
  }
  rt<-c('趕上概率'=m/n);rt
}
train(10000)

其中函數說明

rnorm
正態分佈隨機數的生成函數,句法是:rnorm(n,mean=0,sd=1) 其中n表示生成的隨機數數量,mean是正態分佈的均值,默認爲0,sd是正態分佈的標準差,默認時爲1;

> rnorm(5)
[1] -0.49565105  1.88416170 -0.57505071  0.02450717 -0.05061391
> rnorm(5,10,1)
[1]  9.659984 11.131650 10.367761  7.634073 10.291419

更多關於分佈函數詳見
sample
sample的完整形式sample(x,size,replace,prob)
x是原樣本;
size表示生成分佈數據數目;
replace是重複的意思,即可以重複對元素進行抽樣,如果爲T也就是所謂的有放回抽樣;默認爲不放回
prob表示樣本的分佈率;默認爲等概率
具體用法詳見

> sample(c(1,2),2)
[1] 2 1
> sample(c(1,2),2)
[1] 1 2
> sample(c(1,2),2,T)
[1] 2 2
> sample(c(1,2),5,T,c(0.8,0.2))
[1] 1 1 1 1 1
> sample(c(1,2),5,T,c(0.8,0.2))
[1] 1 2 1 2 1

運行結果

> train<-function(n){
+   m=0
+   for(i in 1:n){
+     x<-rnorm(1,30,2)
+     p1=c(0.7,0.2,0.1);p2=c(0.3,0.4,0.2,0.1)
+     y<-sample(c(0,5,10),1,p=p1)
+     z<-sample(c(28,30,32,34),1,p=p2)
+     if((x+y)>z){m=m+1}
+   }
+   rt<-c('趕上概率'=m/n);rt
+ }
> train(10000)
趕上概率 
  0.6433 

DONE!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章