利用Python的随机数解数学题

在qq群里面看到一道小学的数学题:

这里写图片描述

原谅我不是机智的小学生了(我相信一定有简单的方法),也嫌弃高等数学的积分方法。。。于是想用程序解决它,不想费脑。于是又想到了一个经典的算法:蒙特卡洛方法,具体可以参照20世纪十大伟大的算法

这道题目的关键就是求出右上角那个伪三角形的面积。这样问题就迎刃而解了。单独看右边正方形右上的四分之一的正方形,下图的红色框框部分~~

这里写图片描述

产生两个随机数x和y,范围为[0,5]。然后应用简单的距离比较,看这个随机点是否落在阴影的三角形内。重复这样的过程n次,当重复的次数接近无穷大时,结果越准确。我这里取了100000,其实精度已经达到了0.01。

import random
import math

count = 0
for i in range(100000):
    x = random.random() * 5
    y = random.random() * 5
    if math.sqrt(x**2 + y**2) > 5 and (y < 0.5 * x + 2.5):
        count = count + 1
result = 100 - math.pi * 25 - count / 100000.0
print result

就这样,算出的结果是:

21.3247636603
[Finished in 0.2s]

不知道正确答案有没有算错,但是这个方法是很炫的。

猜你喜欢

转载自blog.csdn.net/qxconverse/article/details/52077830
今日推荐