Python模塊之Random模塊


random —— 生成偽隨機數,該模塊為各種分布實現偽隨機數生成器。我們來看看random模塊常用的幾個函數的介紹:

一、針對整數的方法:

random.randrange(stop)

random.randrange(start, stop[, step])
等同於choice(range(start, stop, step)),但不實際創建range對象。

>>> import random
>>> print(random.randrange(4))         #返回0~3的隨機整數
1
>>> print(random.randrange(1, 9))       #返回1~8的隨機整數
8
>>> print(random.randrange(1, 11, 2))    #返回1~10的隨機奇數
3

random.randint(a, b)
返回一個隨機整數N,a <= N <= b, 等同於randrange(a, b+1)。

>>> print(random.randint(1, 10))        #返回[1, 10]的隨機整數
8
>>> print(random.randint(-10, -1))      #返回[-10, -1]的隨機整數,不能寫成random.randint(-1, -10)
-5

二、針對序列的方法:
random.choice(seq)
從非空序列中返回一個隨機元素,如果序列為空,則引發IndexError。

>>> print(random.choice('BHasdgiHUI1234'))   #返回一個字符
I
>>> print(random.choice(['apple', 'peach', 'pear']))   #返回列表中一個隨機一個元素
pear
>>> print(random.choice(('Bob', 'Jhon', 'Micheal')))  #返回元組中一個隨機元素
Jhon

random.choices(population, weight=None, *, cum_weight=None, k=1)
從可替代的population序列中隨機取出k個元素組成列表,返回該列表。weight是相對權重序列,cum_weight是累計權重,同時制定權重weight和累計權重cum_weight,會產生類型錯誤。

>>> print(random.choices(['red', 'yellow','green', 'blue', 'black', 'pink', 'purple', 'white'], k=4))  
['red', 'red', 'purple', 'black']
>>> print(random.choices(['apple', 'peach', 'pear'], [1, 2, 3], k=4))
['pear', 'pear', 'pear', 'peach']
>>> print(random.choices(['apple', 'peach', 'pear'], [6, 12, 2], k=4))
['peach', 'peach', 'pear', 'pear']

random.shuffle(x [,random])
重新排列序列(洗牌)

>>> seq = ['red1','yellow2','blue3', 'green4' ]
>>> random.shuffle(seq)    #列表重新排序 >>> print(seq)
['red1', 'blue3', 'green4', 'yellow2']

random.sample(population, k)
返回一個從序列population中隨機抽取K個不重復的元素組成的新隊列。用於不可替換的隨機抽樣。返回一個新的列表,不破壞原有列表。如果新隊列的長度k大於原隊列population的長度,則會引發ValueError錯誤。

>>> print(random.sample(['a', 'b', 'c', 'd', 'e', '1', '2', '3'], 2))  #列表中隨機抽取2個元素組成新的列表
['d', 'b']
>>> print(''.join(random.sample("ahoiNUAI483*4", 4)))  
UohI

三、真值分布:

random.random()
返回一個隨機的浮點數,范圍[0, 1)

>>> print(random.random())
0.5867129667371662

random.uniform(a, b)
返回一個a和b之間的隨機浮點數,如果a>b,則返回b和a之間的浮點數。a和b都可能出現在結果中。

>>> print(random.uniform(1, 10))
5.961863773592117
>>> print(random.uniform(2,6))
3.2723769810535543

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM