欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂淺談Python視頻教程之random模塊詳解

2017-12-18 10:13:22 1350瀏覽

今天扣丁學(xué)堂小編給大家詳細介紹一下關(guān)于Python視頻教程之random模塊詳解,,首先用于生成偽隨機數(shù)之所以稱之為偽隨機數(shù),是因為真正意義上的隨機數(shù)(或者隨機事件)在某次產(chǎn)生過程中是按照實驗過程中表現(xiàn)的分布概率隨機產(chǎn)生的,其結(jié)果是不可預(yù)測的,是不可見的。而計算機中的隨機函數(shù)是按照一定算法模擬產(chǎn)生的,其結(jié)果是確定的,是可見的。我們可以這樣認為這個可預(yù)見的結(jié)果其出現(xiàn)的概率是100%。所以用計算機隨機函數(shù)所產(chǎn)生的“隨機數(shù)”并不隨機,是偽隨機數(shù)。

計算機的偽隨機數(shù)是由隨機種子根據(jù)一定的計算方法計算出來的數(shù)值。所以,只要計算方法一定,隨機種子一定,那么產(chǎn)生的隨機數(shù)就是固定的。只要用戶或第三方不設(shè)置隨機種子,那么在默認情況下隨機種子來自系統(tǒng)時鐘。Python的這個庫在底層使用通用的算法,經(jīng)過長久的考驗,可靠性沒得說,但絕對不能用于密碼相關(guān)的功能。


扣丁學(xué)堂淺談Python視頻教程之random模塊詳解


一、基本方法

random.seed(a=None, version=2)

初始化偽隨機數(shù)生成器。如果未提供a或者a=None,則使用系統(tǒng)時間為種子。如果a是一個整數(shù),則作為種子。

random.getstate()

返回一個當(dāng)前生成器的內(nèi)部狀態(tài)的對象

random.setstate(state)

傳入一個先前利用getstate方法獲得的狀態(tài)對象,使得生成器恢復(fù)到這個狀態(tài)。

random.getrandbits(k)

返回一個不大于K位的Python整數(shù)(十進制),比如k=10,則結(jié)果在0~2^10之間的整數(shù)。

二、針對整數(shù)的方法

random.randrange(stop)

random.randrange(start, stop[, step])

等同于choice(range(start, stop, step)),但并不實際創(chuàng)建range對象。

random.randint(a, b)

返回一個a <= N <= b的隨機整數(shù)N。等同于 randrange(a, b+1)

三、針對序列類結(jié)構(gòu)的方法

random.choice(seq)

從非空序列seq中隨機選取一個元素。如果seq為空則彈出 IndexError異常。

random.choices(population, weights=None, *, cum_weights=None, k=1)

3.6版本新增。從population集群中隨機抽取K個元素。weights是相對權(quán)重列表,cum_weights是累計權(quán)重,兩個參數(shù)不能同時存在。

random.shuffle(x[, random])

隨機打亂序列x內(nèi)元素的排列順序。只能針對可變的序列,對于不可變序列,請使用下面的sample()方法。

random.sample(population, k)

從population樣本或集合中隨機抽取K個不重復(fù)的元素形成新的序列。常用于不重復(fù)的隨機抽樣。返回的是一個新的序列,不會破壞原有序列。要從一個整數(shù)區(qū)間隨機抽取一定數(shù)量的整數(shù),請使用sample(range(10000000), k=60)類似的方法,這非常有效和節(jié)省空間。如果k大于population的長度,則彈出ValueError異常。

四、真值分布

random模塊最高端的功能其實在這里。

random.random()

返回一個介于左閉右開[0.0, 1.0)區(qū)間的浮點數(shù)

random.uniform(a, b)

返回一個介于a和b之間的浮點數(shù)。如果a>b,則是b到a之間的浮點數(shù)。這里的a和b都有可能出現(xiàn)在結(jié)果中。

random.triangular(low, high, mode)

返回一個low <= N <=high的三角形分布的隨機數(shù)。參數(shù)mode指明眾數(shù)出現(xiàn)位置。

random.betavariate(alpha, beta)

β分布。返回的結(jié)果在0~1之間

random.expovariate(lambd)

指數(shù)分布

random.gammavariate(alpha, beta)

伽馬分布

random.gauss(mu, sigma)

高斯分布

random.lognormvariate(mu, sigma)

對數(shù)正態(tài)分布

random.normalvariate(mu, sigma)

正態(tài)分布

random.vonmisesvariate(mu, kappa)

卡帕分布

random.paretovariate(alpha)

帕累托分布

random.weibullvariate(alpha, beta)

五、可選擇的生成器

class random.SystemRandom([seed])

使用 os.urandom() 方法生成隨機數(shù)的類,由操作系統(tǒng)提供源碼,不一定所有系統(tǒng)都支持

六、典型的例子

>>> random() # 隨機浮點數(shù): 0.0 <= x < 1.0

0.37444887175646646

>>> uniform(2.5, 10.0) # 隨機浮點數(shù): 2.5 <= x < 10.0

3.1800146073117523

>>> randrange(10) # 0-9的整數(shù):

7

>>> randrange(0, 101, 2) # 0-100的偶數(shù)

26

>>> choice(['win', 'lose', 'draw']) # 從序列隨機選擇一個元素

'draw'

>>> deck = 'ace two three four'.split()

>>> shuffle(deck) # 對序列進行洗牌,改變原序列

>>> deck

['four', 'two', 'ace', 'three']

>>> sample([10, 20, 30, 40, 50], k=4) # 不改變原序列的抽取指定數(shù)目樣本,并生成新序列

[40, 10, 50, 30]

>>> # 6次旋轉(zhuǎn)紅黑綠輪盤(帶權(quán)重可重復(fù)的取樣),不破壞原序列

>>> choices(['red', 'black', 'green'], [18, 18, 2], k=6)

['red', 'green', 'black', 'black', 'red', 'black']

>>> # 德州撲克計算概率Deal 20 cards without replacement from a deck of 52 playing cards

>>> # and determine the proportion of cards with a ten-value

>>> # (a ten, jack, queen, or king).

>>> deck = collections.Counter(tens=16, low_cards=36)

>>> seen = sample(list(deck.elements()), k=20)

>>> seen.count('tens') / 20

0.15

>>> # 模擬概率Estimate the probability of getting 5 or more heads from 7 spins

>>> # of a biased coin that settles on heads 60% of the time.

>>> trial = lambda: choices('HT', cum_weights=(0.60, 1.00), k=7).count('H') >= 5

>>> sum(trial() for i in range(10000)) / 10000

0.4169

>>> # Probability of the median of 5 samples being in middle two quartiles

>>> trial = lambda : 2500 <= sorted(choices(range(10000), k=5))[2] < 7500

>>> sum(trial() for i in range(10000)) / 10000

0.7958

下面是生成一個包含大寫字母A-Z和數(shù)字0-9的隨機4位驗證碼的程序

import random

checkcode = ''

for i in range(4):

current = random.randrange(0,4)

if current != i:

temp = chr(random.randint(65,90))

else:

temp = random.randint(0,9)

checkcode += str(temp)

print(checkcode)

下面是生成指定長度字母數(shù)字隨機序列的代碼:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import random, string

def gen_random_string(length):

# 數(shù)字的個數(shù)隨機產(chǎn)生

num_of_numeric = random.randint(1,length-1)

# 剩下的都是字母

num_of_letter = length - num_of_numeric

# 隨機生成數(shù)字

numerics = [random.choice(string.digits) for i in range(num_of_numeric)]

# 隨機生成字母

letters = [random.choice(string.ascii_letters) for i in range(num_of_letter)]

# 結(jié)合兩者

all_chars = numerics + letters

# 洗牌

random.shuffle(all_chars)

# 生成最終字符串

result = ''.join([i for i in all_chars])

return result

if __name__ == '__main__':

print(gen_random_string(64))

以上就是關(guān)于Python隨機數(shù)生成模塊random的詳細介紹,最后想要學(xué)習(xí)Python開發(fā)的小伙伴一定要選擇專業(yè)的Python培訓(xùn)機構(gòu)??鄱W(xué)堂作為知名的IT培訓(xùn)機構(gòu),不僅有專業(yè)的老師和與時俱進的課程體系,還有大量的Python全棧開發(fā)工程師視頻教程供學(xué)員觀看學(xué)習(xí),想要學(xué)好Python開發(fā)技術(shù)的小伙伴就抓緊時間行動吧??鄱W(xué)堂Python技術(shù)交流群:279521237。


扣丁學(xué)堂微信公眾號


【關(guān)注微信公眾號獲取更多學(xué)習(xí)資料】


查看更多關(guān)于“Python開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Python視頻教程 Python基礎(chǔ)教程 Python爬蟲 Python培訓(xùn)

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國免費咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號中關(guān)村智誠科創(chuàng)大廈4層
京ICP備2021002079號-2   Copyright ? 2017 - 2022
返回頂部 返回頂部