原文链接:http://tecdat.cn/?p=13033
- -
介绍
布丰投针是几何概率畛域中最古老的问题之一。它最早是在1777年提出的。它将针头掷到有平行线的纸上,并确定针和其中一条平行线相交的可能性。令人诧异的后果是概率与pi的值间接相干。
R程序将依据上段所述的状况估算pi的值并应用gganimate进行动静可视化。
第1局部
对于A局部,咱们创立一个数据帧,该数据帧将在3个不同的区间上生成随机值,这些区间将代表x,y的范畴以及每个落针点的角度。这是一个易于实现的随机数状况,须要应用runif函数。此性能要求输出数量,后跟一个距离。生成数字后,咱们会将值保留到数据框中。
rneedle <- function(n) { x = runif(n, 0, 5) y = runif(n,0, 1) angle = runif(n,-pi, pi) #从-180到180的角度 values<-data.frame(cbind(x, y, angle)) return(values)}values<-rneedle(50)#查看是否生成50×3矩阵values#咱们的数据帧曾经胜利生成。
x y angle1 4.45796267 0.312440618 1.37184652 3.43869230 0.462824677 2.97383673 2.55561523 0.596722445 -2.96382854 3.68098572 0.670877506 -0.68605025 0.03690118 0.202724803 -0.33151416 4.64979938 0.180091416 -0.32930937 4.92459238 0.172328845 -0.52211338 3.50660347 0.752147374 2.91002219 2.03787919 0.167897415 -0.321383310 0.38647133 0.539615776 -0.118898211 3.28149935 0.102886770 -1.631825612 3.68811892 0.765077533 1.245903713 1.52004894 0.682455494 -0.421980214 3.76151379 0.508555610 0.1082087...
第2局部
咱们绘制第一局部中的针。重要的是不要在这个问题上呈现超过2条水平线。它使咱们能够进行查看以理解此处描述的几何个性的个别概念。话虽如此,让咱们留神咱们决定在每个方向上将图形扩大1个单位。起因是设想一个针尾从y = 1开始,其角度为pi / 2。咱们须要假如该方向的范畴最大为2。
plotneedle(values)
第3局部
在上面,将基于浏览布冯针和根本几何原理的常识,查看pi的估算值。
buffon(values)
第4局部
运行代码后,咱们收到以下答案。
buffon(X)
[1] 3.846154
set.seed(10312013)X <- rneedle(50)plotneedle(X)buffon(X)
> buffon(X)[1] 3.846154
第5局部
如前几节所述,当咱们投掷更多的针头时,咱们冀望以最小的不确定性取得更精确的答案。从Approxpi函数运行代码后,咱们收到了平均值= 3.172314和方差0.04751391的值。对于这样一个简略的试验,它对pi进行了很高的预计。
Approxpi(500)mean(Approxpi(500)) var(Approxpi(500))
> mean(Approxpi(500)) [1] 3.172314> var(Approxpi(500)) [1] 0.04751391
接下来对模仿次数从500\~600的预测进行动静可视化,红色示意针投放到了直线上:
参考资料
Schroeder,L.(1974年)。布冯针问题:许多数学概念的激动人心的利用。