无厘头研究
keep_beating @ 2015.01.07 , 14:06
无用技能之——如何用霰弹枪计算圆周率?
[-]
方法很简单,就是得到圆周率(Pi)这个大自然神奇常数的值,当然越精确越好。那么今天我就教大家用霰弹枪这种日常生活中随处可见的小工具(...)来计算圆周率吧!
这种方法,往高大上了说叫“重要性抽样”(importance sampling),它的算法是在有限的采样次数内,尽量让采样点覆盖对积分贡献很大的点。这种方法在仿真中很重要,我们需要随机事件多次发生,使小概率的的稀有时间也能频繁发生,从而降低方差,加快仿真速度。
重要性采样是基于蒙特卡洛模拟法(Monte Carlo Simulations)的。蒙特卡洛模拟法是一种以概率统计理论为指导的数值计算方法。使用它模拟某一过程时,需要产生某一概率分布的随机变量,然后用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。上面的解释没看懂/不想看没关系,因为霰弹枪计算圆周率就能完美诠释蒙特卡洛模拟法。
[-]
选一个心情抑郁急需发泄的日子,找块板子,如上图所示,裁成正方形,然后以正方形变长为半径画弧,把板子挂在什么地方。完成这个步骤之后,你就可以端着枪对它一阵乱扫啦,枪眼越多越好。当你泄愤完之后,别忘了去统计下板子上的枪眼个数——分圆弧以外和圆弧以内的,并记住圆弧内的枪眼个数和整个正方形内的个数比例为 Pi/4(假设正方形边长尾1,则以1为变长的圆面积为 Pi,1/4 圆的面积就是 Pi/4,而正方形的面积为1)。
事实上真有研究者做过这个实验。动图中圆周率常数的精度随着枪眼数量增加而提高。在事件发生9000次时,就得到了3.13这个还算不错的结果。
[keep_beating via Motherboard]