首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python的math库、random库实际应用

昨天在说那个列表的时候,我挖了一个坑,不知道你们看出来没有?就是用循环语句写迭代的时候,总是运行不了结果,其实是因为我没有缩进的问题,因为有一个for循环,下面print如果没有对应的缩进,那么就说明这个循环语句少了一个输出,是一个死循环。所以print必须要有个缩进,写在i下面即可。(昨天一个老铁凌晨的时候问我为啥,哈哈)

好了,废话不多说,今天我们先介绍一下math库和random库,昨天脚疼没当回事,结果今天更严重了,一直在病床上躺着,刚刚把今天要说的东西整理好笔记,对于math库和random库,我直接就给个图片,行不?先看一下,适当的背一下,下面教你们如何引用这些函数?顺便来个实例。

math库:

random库:

以上的函数一定要记会!因为这些东西是我们用来吃饭的东西!

其中random库的seed函数我打算明天好好说一下,因为在Python中这个seed比较重要。

下面我直接用一个实例来说一下如何运用上面的函数吧

小程序的目的是:精确的求π,但是π只能用近似的方法不断来接近更精确的值,我们便用一个Monte Carlo方法来求π的值,其中monte carlo法说实话啊,就是几何概型,在第一象限中,设置一个边长为1的正方形,然后以原点为圆心,半径为1,在第一象限画一个四分之一圆,然后往正方形里面随机投点,最后点投入的越来越多,通过比较落在四分之一圆内的和整个正方形内部的点的个数,就可以来求出四分之一圆的面积,进而得出π的近似值。通过提高投点的个数,就可以得到更为精确的π值。

# pi.py

fromrandomimportrandom

frommathimportsqrt

fromtimeimportclock

DARTS =1200

hits =

clock()

foriinrange(1,DARTS):

x,y = random(),random()

dist = sqrt(x**2+ y**2)

ifdist

hits = hits +1

pi =4* (hits/DARTS)

print("Pi的值是 %s"% pi)

print("程序运行时间是 %-5.5ss"% clock())

下面我来解释一下这个小程序。

这个程序是一个典型的IPO模型

输入:抛洒点的数量

处理:对于每个抛洒点,通过计算抛洒点到圆心的距离,来判断抛洒点是落在了圆内还是圆外。进而统计点的数量。

输出:π

但是对于math库和random库,我们需要先引用math库和random库,因为我们在计算抛洒点到原因的距离的时候,用到了sqrt(x^2+y^2)与1进行比较,其中sqrt属于math库的函数,而且其中我们抛洒点是随机抛洒的,所以用到了random,属于random库里面的函数,其中我想通过设置不同的抛洒点数量来得到不同的π值,并且想看看与输出时间的关系,所以我又引入了一个time函数。

具体如何引用math库、random库、time呢?

就用

fromrandomimportrandom

frommathimportsqrt

fromtimeimportclock

就是之前讲的其中一种方式

from 函数库 import 函数名

然后设置抛洒点的数量,其中DARTS就是抛洒点的数量。

hits表示的是落在四分之一圆内的抛洒点数量。

接下来是一个for循环:

x,y的值是随机的,然后dist就是抛洒点距离圆心的距离,下面是一个if函数,如果距离小于1,那么hits就加1.

然后求π的公式就

pi=4*(hits/Darts)

然后print即可。

很简单的一个小程序,你们运行的时候,告诉我一定要注意什么?特别是循环语句里面还内嵌了一个if语句,特别特别要注意什么??留言。

当darts为1200的时候 π值为3.17

当darts为30000的时候,π为3.1204

好了今天就这样了,躺床上写文章真的是超级麻烦,我这边放了一个ipad,我解释程序的时候,还要把程序发到ipad上,这样才能边看程序边打字,一个手机,一个鼠标、鼠标垫,一个小桌子放笔记本电脑,然后旁边又是笔记本和书还有笔,躺床上真的好难受!希望明天就可以下床。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180201G1A14Q00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券