用R语言模拟掷硬币过程
2016-05-15 10:16
477 查看
硬币分为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。下面,在RStudio中,使用R语言进行掷硬币的仿真实验。
//coin.R
效果如下:
图(1) 掷硬币500次得到Head(正面)的频率
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。下面,在RStudio中,使用R语言进行掷硬币的仿真实验。
//coin.R
# 掷硬币500次 N <- 500 flipsequence <- sample(x=c(0,1), prob=c(0.5,0.5),size = N, replace = TRUE) r <- cumsum(flipsequence) n <- 1:N runprop = 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.5 lines(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 ),adj=c(1,0), cex=1.3)
效果如下:
图(1) 掷硬币500次得到Head(正面)的频率
相关文章推荐
- 基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
- 一步步解析Python斗牛游戏的概率
- PHP大转盘中奖概率算法实例
- python概率计算器实例分析
- Python使用random和tertools模块解一些经典概率问题
- 数学书籍备忘
- LiLei和HanMeiMei的隐式马尔可夫爱情
- 处理Plot rendering error
- R语言 R6Class 读取Ini文件
- 面试题:限制用户登录(请求)频率,如限制用户在1分钟之内最多登录10次
- R语言书籍的学习路线图
- 如何修改cacti采集频率
- R语言学习-统计之都
- R的若干基因及争论
- 如何用随机函数rand5来构造随机函数rand7
- 概率最大骰子总和 Topcoder SRM 536 DIV1 第2题
- map容器,下标行为的编程意义
- R语言初识
- 浅谈R语言的面向对象编程
- 查找一个list中各个数组的元素在一个固定数组中的位置, 并把位置信息记录到一个矩阵里