利用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]

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值