python中math库_Python的math库、random库实际应用
昨天在說(shuō)那個(gè)列表的時(shí)候,我挖了一個(gè)坑,不知道你們看出來(lái)沒有?就是用循環(huán)語(yǔ)句寫迭代的時(shí)候,總是運(yùn)行不了結(jié)果,其實(shí)是因?yàn)槲覜]有縮進(jìn)的問題,因?yàn)橛幸粋€(gè)for循環(huán),下面print如果沒有對(duì)應(yīng)的縮進(jìn),那么就說(shuō)明這個(gè)循環(huán)語(yǔ)句少了一個(gè)輸出,是一個(gè)死循環(huán)。所以print必須要有個(gè)縮進(jìn),寫在i下面即可。(昨天一個(gè)老鐵凌晨的時(shí)候問我為啥,哈哈)
好了,廢話不多說(shuō),今天我們先介紹一下math庫(kù)和random庫(kù),昨天腳疼沒當(dāng)回事,結(jié)果今天更嚴(yán)重了,一直在病床上躺著,剛剛把今天要說(shuō)的東西整理好筆記,對(duì)于math庫(kù)和random庫(kù),我直接就給個(gè)圖片,行不?先看一下,適當(dāng)?shù)谋骋幌?#xff0c;下面教你們?nèi)绾我眠@些函數(shù)?順便來(lái)個(gè)實(shí)例。
math庫(kù):
random庫(kù):
以上的函數(shù)一定要記會(huì)!因?yàn)檫@些東西是我們用來(lái)吃飯的東西!
其中random庫(kù)的seed函數(shù)我打算明天好好說(shuō)一下,因?yàn)樵赑ython中這個(gè)seed比較重要。
下面我直接用一個(gè)實(shí)例來(lái)說(shuō)一下如何運(yùn)用上面的函數(shù)吧
小程序的目的是:精確的求π,但是π只能用近似的方法不斷來(lái)接近更精確的值,我們便用一個(gè)Monte Carlo方法來(lái)求π的值,其中monte carlo法說(shuō)實(shí)話啊,就是幾何概型,在第一象限中,設(shè)置一個(gè)邊長(zhǎng)為1的正方形,然后以原點(diǎn)為圓心,半徑為1,在第一象限畫一個(gè)四分之一圓,然后往正方形里面隨機(jī)投點(diǎn),最后點(diǎn)投入的越來(lái)越多,通過比較落在四分之一圓內(nèi)的和整個(gè)正方形內(nèi)部的點(diǎn)的個(gè)數(shù),就可以來(lái)求出四分之一圓的面積,進(jìn)而得出π的近似值。通過提高投點(diǎn)的個(gè)數(shù),就可以得到更為精確的π值。
# 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("程序運(yùn)行時(shí)間是 %-5.5ss"% clock())
下面我來(lái)解釋一下這個(gè)小程序。
這個(gè)程序是一個(gè)典型的IPO模型
輸入:拋灑點(diǎn)的數(shù)量
處理:對(duì)于每個(gè)拋灑點(diǎn),通過計(jì)算拋灑點(diǎn)到圓心的距離,來(lái)判斷拋灑點(diǎn)是落在了圓內(nèi)還是圓外。進(jìn)而統(tǒng)計(jì)點(diǎn)的數(shù)量。
輸出:π
但是對(duì)于math庫(kù)和random庫(kù),我們需要先引用math庫(kù)和random庫(kù),因?yàn)槲覀冊(cè)谟?jì)算拋灑點(diǎn)到原因的距離的時(shí)候,用到了sqrt(x^2+y^2)與1進(jìn)行比較,其中sqrt屬于math庫(kù)的函數(shù),而且其中我們拋灑點(diǎn)是隨機(jī)拋灑的,所以用到了random,屬于random庫(kù)里面的函數(shù),其中我想通過設(shè)置不同的拋灑點(diǎn)數(shù)量來(lái)得到不同的π值,并且想看看與輸出時(shí)間的關(guān)系,所以我又引入了一個(gè)time函數(shù)。
具體如何引用math庫(kù)、random庫(kù)、time呢?
就用
fromrandomimportrandom
frommathimportsqrt
fromtimeimportclock
就是之前講的其中一種方式
from 函數(shù)庫(kù) import 函數(shù)名
然后設(shè)置拋灑點(diǎn)的數(shù)量,其中DARTS就是拋灑點(diǎn)的數(shù)量。
hits表示的是落在四分之一圓內(nèi)的拋灑點(diǎn)數(shù)量。
接下來(lái)是一個(gè)for循環(huán):
x,y的值是隨機(jī)的,然后dist就是拋灑點(diǎn)距離圓心的距離,下面是一個(gè)if函數(shù),如果距離小于1,那么hits就加1.
然后求π的公式就
pi=4*(hits/Darts)
然后print即可。
很簡(jiǎn)單的一個(gè)小程序,你們運(yùn)行的時(shí)候,告訴我一定要注意什么?特別是循環(huán)語(yǔ)句里面還內(nèi)嵌了一個(gè)if語(yǔ)句,特別特別要注意什么??留言。
當(dāng)darts為1200的時(shí)候 π值為3.17
當(dāng)darts為30000的時(shí)候,π為3.1204
好了今天就這樣了,躺床上寫文章真的是超級(jí)麻煩,我這邊放了一個(gè)ipad,我解釋程序的時(shí)候,還要把程序發(fā)到ipad上,這樣才能邊看程序邊打字,一個(gè)手機(jī),一個(gè)鼠標(biāo)、鼠標(biāo)墊,一個(gè)小桌子放筆記本電腦,然后旁邊又是筆記本和書還有筆,躺床上真的好難受!希望明天就可以下床。
總結(jié)
以上是生活随笔為你收集整理的python中math库_Python的math库、random库实际应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么恢复被格式化u盘电脑格式化了如何恢复
- 下一篇: python渐变色代码_如何在Pytho