博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用R语言模拟掷硬币过程
阅读量:755 次
发布时间:2019-03-22

本文共 1180 字,大约阅读时间需要 3 分钟。

  硬币分为Head(正面)和Tail(反面),如果硬币是均匀的,那么出现Head和Tail的概率分别为50%、50%。把一枚硬币掷三次,结果有2*2*2=8种可能,分别为:

  HHH、HHT、HTH、HTT
  TTT、TTH、THT、THH
  那么,样本空间(sample spaces): Ω ={HHH、HHT、HTH、HTT、TTT、TTH、THT、THH},令 x
Ω
里一个的样本,则
   P(x="HHH")=1/8 ,
   P(x="HHT")=1/8 ,
   ...
   P(x="THH")=1/8
  统计8个样本中H出现的次数:
    Num(H)=3+2+2+1+0+1+1+2=8+4=12
  那么H出现的频率为:
    Frequency(H)= 12/(3*8)=12/24=0.5
  可以看到P(H) = Frequency(H)
  以上是从理论上分析的结果,在实际操作中,掷硬币三次,Num(H)可能为10,那么Frequent(H) = 10/24=0.41与0.5有较大的偏差。当我们把掷硬币的次数增加时,Frequent(H)会逐步接近0.5。下面,在中,使用R语言进行掷硬币的仿真实验。
  //coin.R  

# 掷硬币500次N <- 500flipsequence <- sample(x=c(0,1), prob=c(0.5,0.5),size = N, replace = TRUE)r <- cumsum(flipsequence)n <- 1:Nrunprop = r/n#绘图plot(n,runprop,type="o",log="x",     xlim=c(1,N), ylim=c(0.0,1.0), cex.axis=1.5,     main="Running Proportion of Heads",cex.axis=1.5)#添加一条直线y=0.5lines(c(1,N),c(0.5,0.5),lty=3)#添加标注flipletters <- paste(c("T","H")[flipsequence[1:10]+1], collapse = "")displaystring <- paste("Flip Sequence= ", flipletters,'...',sep="" )text(5,0.9, displaystring, adj = c(0,1),cex=1.3)#显示模拟500次得到Head的频率text(N-100,0.3, paste("End Proportion = ",runprop[N]),adj=c(1,0), cex=1.3)

  效果如下:

这里写图片描述
图(1) 掷硬币500次得到Head(正面)的频率
  
  

你可能感兴趣的文章