wtuyss 发表于 2018-12-15 15:51:06

PHP实现投镖求PI法,最笨但最有意思

#### 原理见下图:被称为利用投飞镖的方法求PI!(http://www.yinqisen.cn/wp-content/uploads/2015/11/toubiaopi.jpg)#### 以下总结选自其他网友:1. Figure2是Figure1的右上角的部分。2. 向Figure2中投掷飞镖若干次(一个很大的数目),并且每次都仍在不同的点上。3. 如果投掷的次数非常多,Figure2将被刺得“千疮百孔”。4. 这时,“投掷在圆里的次数”除以“总投掷次数”,再乘以4,就是PI的值!(具体的推导过程参见原文)在这个算法中,很重要的一点是:如何做到“随机地向Figure2投掷”,就是说如何做到Figure2上的每个点被投中的概率相等。有人总结了一下,这个实际上叫做蒙特卡洛算法,我们取一个单位的正方形(1 x 1) 里面做一个内切圆(单位圆),则 单位正方形面积 :内切单位圆面积 = 单位正方形内的飞镖数 : 内切单位圆内的飞镖数 ,通过计算飞镖个数就可以把单位圆面积算出来, 通过面积,在把圆周率计算出来。 注意 ,精度和你投掷的飞镖次数成正比。#### 我的PHP源码实现:PHP自带的mt_rand随机函数偏差较大,换成Halton sequence的方法,测试结果见后面~~~.php
页: [1]
查看完整版本: PHP实现投镖求PI法,最笨但最有意思