@ 2015.01.07 , 14:06
36

无用技能之——如何用霰弹枪计算圆周率?

[-]

方法很简单,就是得到圆周率(Pi)这个大自然神奇常数的值,当然越精确越好。那么今天我就教大家用霰弹枪这种日常生活中随处可见的小工具(...)来计算圆周率吧!

这种方法,往高大上了说叫“重要性抽样”(importance sampling),它的算法是在有限的采样次数内,尽量让采样点覆盖对积分贡献很大的点。这种方法在仿真中很重要,我们需要随机事件多次发生,使小概率的的稀有时间也能频繁发生,从而降低方差,加快仿真速度。

重要性采样是基于蒙特卡洛模拟法(Monte Carlo Simulations)的。蒙特卡洛模拟法是一种以概率统计理论为指导的数值计算方法。使用它模拟某一过程时,需要产生某一概率分布的随机变量,然后用统计方法把模型的数字特征估计出来,从而得到实际问题的数值解。上面的解释没看懂/不想看没关系,因为霰弹枪计算圆周率就能完美诠释蒙特卡洛模拟法。

[-]

选一个心情抑郁急需发泄的日子,找块板子,如上图所示,裁成正方形,然后以正方形变长为半径画弧,把板子挂在什么地方。完成这个步骤之后,你就可以端着枪对它一阵乱扫啦,枪眼越多越好。当你泄愤完之后,别忘了去统计下板子上的枪眼个数——分圆弧以外和圆弧以内的,并记住圆弧内的枪眼个数和整个正方形内的个数比例为 Pi/4(假设正方形边长尾1,则以1为变长的圆面积为 Pi,1/4 圆的面积就是 Pi/4,而正方形的面积为1)。

事实上真有研究者做过这个实验。动图中圆周率常数的精度随着枪眼数量增加而提高。在事件发生9000次时,就得到了3.13这个还算不错的结果。

[keep_beating via Motherboard]


给这篇稿打赏,让译者更有动力
支付宝打赏 [x]
您的大名: 打赏金额:

0.0
赞一个 (1)

TOTAL COMMENTS: 36+1

  1. 虫合虫合
    @3 years ago
    2653681

    撸一发也可以啊

    [33] XX [1] 回复 [0]
  2. 红白机
    @3 years ago
    2653683

    9000次才他妈算出3.13这个“精确”的数字????
    他妈我觉得直接用霰弹枪顶着研究者的脑袋,让他一分钟算出来不然崩了他更有效率!!!

    [146] XX [73] 回复 [0]
  3. 2653684

    人打的话感觉不大准,会刻意大某个地方打

    [11] XX [3] 回复 [0]
  4. 2653685

    某老师:警察同志,我这杆枪真的是去给同学们提高整体数学成绩的,请你相信我啊,不信你去看那篇煎蛋文章啊。
    警察:可是你拿着枪去教室,扬言崩了数学成绩最差的学生来提高全班整体成绩的行为是开个玩笑喽?

    [194] XX [1] 回复 [0]
  5. 嗯嗯
    @3 years ago
    2653688

    有个小问题,第二次的着弹点跟第一次的一样怎么办?

    [3] XX [10] 回复 [0]
  6. ARCHER
    @3 years ago
    2653689

    以前总爱读散弹,恩,现在也是

  7. 五爷
    @3 years ago
    2653691

    警察同志,这是煎蛋网教给我的
    当日,煎蛋网集体消失

    [39] XX [0] 回复 [0]
  8. 马里奥水手
    @3 years ago
    2653692

    明明是如何编程计算圆周率

  9. 2653693

    圆弧内的枪眼个数和圆弧外的个数比例为 Pi/4,不是圆弧外,而是整个正方形吧

  10. 快捷
    @3 years ago
    2653694

    “霰”这个字读xian 跟“线”的读音一样…相信有不少人会读错。

    [15] XX [12] 回复 [0]
  11. mamere
    @3 years ago
    2653697

    @ARCHER: 他的读音的确是散弹啊。

    [1] XX [19] 回复 [0]
  12. 啊啊啊
    @3 years ago
    2653707

    还有那个朴丰投针实验,我当时用蒙特卡罗模拟,最后得到了3.14158……,需要投针模拟次数是1000万次,因为电脑比较垃圾,次数再久一些就卡住了。。。

  13. 蹦蹦
    @3 years ago
    2653708

    这就是你带霰弹枪到学校的理由?

  14. 2653711

    为什么要用枪打,用麦粒,米粒,或用其它可计量个数,体积,质量的东西填满,再计算圆内外比例就行。

  15. ss30mi
    @3 years ago
    2653714

    可以买块切糕按图切开称重量然后也能算出来。

  16. 2653733

    蒙特卡洛一般是用来求最优解的

  17. 2653737

    能画这么圆还算什么啊。
    不如这样算:
    1. 以火柴长度为间距在纸上画多条平行线
    2. 扔火柴
    3. π = 压线火柴/总火柴数

  18. 2653741

    压线火柴/未压线

  19. FrozaSchumi
    @3 years ago
    2653760

    完全不是无用技能好吧!学了个字,霰!

  20. 大海的方向
    @3 years ago
    2653993

    @红白机:实际上, 蒙特卡洛模拟法在估算非常不规则的多边形的面积时,很高效。

  21. 2654009

    我在想,被散弹枪打了9000次的这块板子是如何数出弹烟数量的。。。

  22. 2654186

    密集恐惧症…

  23. 2654248

    @mamere: 翻翻字典吧亲

  24. 2654249

    @大海的方向: @红白机 那个白痴根本不知道怎么「计算圆周率」。

  25. 山神
    @3 years ago
    2654255

    装弹粒那个塑料杯打到靶上面怎么办?

  26. ihatesummer
    @3 years ago
    2654256

    我会另外一个——用微波炉和棉花糖计算光速

  27. 2654276

    蒙特卡罗方法

  28. 2654300

    霰弹枪的弹丸散布不是随机的啊,越接近中心越多……

  29. 西瓜
    @3 years ago
    2654405

    霰弹枪打出来应该类似于高斯分布吧,不能用来模拟蒙特卡洛算法。。。
    这种大数量粒子的分布看电子束打在屏上的图样就可以知道了,霰弹枪成本太高。。

  30. 翼若云
    @3 years ago
    2654622

    “以正方形变长为半径画弧”……科普类有这种错误真的好么Σ( ° △ °|||)︴

  31. 2654896

    @红白机: 蒙特卡洛算出3.13已经很不错了,你平时见到的很多CG特效渲染用了准蒙特卡洛,你都分辨不出假的。

  32. 2655334

    @FrozaSchumi: 霰雪纷其无垠兮,云霏霏其承宇

  33. 飞蛾
    @3 years ago
    2655790

    线代老师给我们讲过这个实验。。。

  34. touchpad
    @3 years ago
    2657576

    @快捷: 掀,不是线

  35. unknown
    @2 years ago
    2840845

    开枪的时间已经找到一个数学家了

  36. 冒个泡~~~~~~~
    @2 years ago
    2845111

    那么今天我就教大家用霰弹枪这种【 日常生活中随处可见 】的小工具。。。哦呵呵

发表评论


24H最赞