国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python標(biāo)準(zhǔn)庫(kù)之隨機(jī)數(shù) (math包、random包)介紹

2019-11-25 18:04:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

我們已經(jīng)在Python運(yùn)算中看到Python最基本的數(shù)學(xué)運(yùn)算功能。此外,math包補(bǔ)充了更多的函數(shù)。當(dāng)然,如果想要更加高級(jí)的數(shù)學(xué)功能,可以考慮選擇標(biāo)準(zhǔn)庫(kù)之外的numpy和scipy項(xiàng)目,它們不但支持?jǐn)?shù)組和矩陣運(yùn)算,還有豐富的數(shù)學(xué)和物理方程可供使用。

此外,random包可以用來(lái)生成隨機(jī)數(shù)。隨機(jī)數(shù)不僅可以用于數(shù)學(xué)用途,還經(jīng)常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。

math包

math包主要處理數(shù)學(xué)相關(guān)的運(yùn)算。math包定義了兩個(gè)常數(shù):

復(fù)制代碼 代碼如下:

math.e   # 自然常數(shù)e
math.pi  # 圓周率pi

此外,math包還有各種運(yùn)算函數(shù) (下面函數(shù)的功能可以參考數(shù)學(xué)手冊(cè)):

復(fù)制代碼 代碼如下:

math.ceil(x)       # 對(duì)x向上取整,比如x=1.2,返回2
math.floor(x)      # 對(duì)x向下取整,比如x=1.2,返回1
math.pow(x,y)      # 指數(shù)運(yùn)算,得到x的y次方
math.log(x)        # 對(duì)數(shù),默認(rèn)基底為e。可以使用base參數(shù),來(lái)改變對(duì)數(shù)的基地。比如math.log(100,base=10)
math.sqrt(x)       # 平方根

三角函數(shù): math.sin(x), math.cos(x), math.tan(x), math.asin(x), math.acos(x), math.atan(x)

這些函數(shù)都接收一個(gè)弧度(radian)為單位的x作為參數(shù)。

角度和弧度互換: math.degrees(x), math.radians(x)

雙曲函數(shù): math.sinh(x), math.cosh(x), math.tanh(x), math.asinh(x), math.acosh(x), math.atanh(x)

特殊函數(shù): math.erf(x), math.gamma(x)

random包

如果你已經(jīng)了解偽隨機(jī)數(shù)(psudo-random number)的原理,那么你可以使用如下:

復(fù)制代碼 代碼如下:

random.seed(x)

來(lái)改變隨機(jī)數(shù)生成器的種子seed。如果你不了解其原理,你不必特別去設(shè)定seed,Python會(huì)幫你選擇seed。

1) 隨機(jī)挑選和排序

random.choice(seq)   # 從序列的元素中隨機(jī)挑選一個(gè)元素,比如random.choice(range(10)),從0到9中隨機(jī)挑選一個(gè)整數(shù)。
random.sample(seq,k) # 從序列中隨機(jī)挑選k個(gè)元素
random.shuffle(seq)  # 將序列的所有元素隨機(jī)排序

2)隨機(jī)生成實(shí)數(shù)

下面生成的實(shí)數(shù)符合均勻分布(uniform distribution),意味著某個(gè)范圍內(nèi)的每個(gè)數(shù)字出現(xiàn)的概率相等:

復(fù)制代碼 代碼如下:

random.random()          # 隨機(jī)生成下一個(gè)實(shí)數(shù),它在[0,1)范圍內(nèi)。
random.uniform(a,b)      # 隨機(jī)生成下一個(gè)實(shí)數(shù),它在[a,b]范圍內(nèi)。

下面生成的實(shí)數(shù)符合其它的分布 (你可以參考一些統(tǒng)計(jì)方面的書(shū)籍來(lái)了解這些分布):

復(fù)制代碼 代碼如下:

random.gauss(mu,sigma)    # 隨機(jī)生成符合高斯分布的隨機(jī)數(shù),mu,sigma為高斯分布的兩個(gè)參數(shù)。
random.expovariate(lambd) # 隨機(jī)生成符合指數(shù)分布的隨機(jī)數(shù),lambd為指數(shù)分布的參數(shù)。

此外還有對(duì)數(shù)分布,正態(tài)分布,Pareto分布,Weibull分布,可參考下面鏈接:

http://docs.python.org/library/random.html

假設(shè)我們有一群人參加舞蹈比賽,為了公平起見(jiàn),我們要隨機(jī)排列他們的出場(chǎng)順序。我們下面利用random包實(shí)現(xiàn):

復(fù)制代碼 代碼如下:

import random
all_people = ['Tom', 'Vivian', 'Paul', 'Liya', 'Manu', 'Daniel', 'Shawn']
random.shuffle(all_people)
for i,name in enumerate(all_people):
    print(i,':'+name)

練習(xí)

設(shè)計(jì)下面兩種彩票號(hào)碼生成器:

1. 從1到22中隨機(jī)抽取5個(gè)整數(shù) (這5個(gè)數(shù)字不重復(fù))

2. 隨機(jī)產(chǎn)生一個(gè)8位數(shù)字,每位數(shù)字都可以是1到6中的任意一個(gè)整數(shù)。

總結(jié)

math.floor(), math.sqrt(), math.sin(), math.degrees()

random.random(), random.choice(), random.shuffle()

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平度市| 大理市| 循化| 溧水县| 丹巴县| 乌苏市| 洛阳市| 葫芦岛市| 萨迦县| 贵港市| 望都县| 府谷县| 崇州市| 交口县| 固安县| 马公市| 泾川县| 海晏县| 东莞市| 合山市| 曲沃县| 宝丰县| 阿拉尔市| 巩义市| 陆川县| 彭水| 洛扎县| 基隆市| 商南县| 金坛市| 隆回县| 永福县| 固镇县| 寻乌县| 噶尔县| 白朗县| 阜康市| 平凉市| 林周县| 和静县| 呼图壁县|