python?random模塊常用函數(shù)基礎教程
1. random 模塊概述
random [?rænd?m]:自由。
random 是Python的內(nèi)置模塊,直接import
導入即可使用,不需要安裝。
【模塊導入語法】
import random
【random模塊的作用】
random 提供了許多函數(shù),可以生成不同類型的隨機數(shù)。如整數(shù)、浮點數(shù)、隨機序列等。
通常用于生成隨機字符串、洗牌、抽樣等操作。
random 模塊的使用非常廣泛,可以用于模擬、游戲、密碼學等領域。
隨機的意思可以理解成每次運行得到的結(jié)果都是不一樣的。
2. 調(diào)用模塊的函數(shù)的語法
【調(diào)用語法】
模塊名.函數(shù)名()
,如 os.mkdir()
os
是模塊名。模塊名和函數(shù)名之間有一個英文小圓點
.
。mkdir
是函數(shù)名。
3. 什么是序列
序列是指一組有序的元素,這些元素可以是數(shù)字、字符、對象等。
序列中的每個元素都有一個唯一的位置,稱為索引
。
序列可以是可變的或不可變的,可變序列可以修改其中的元素,而不可變序列則不能。
序列可以通過索引
和切片
來訪問其中的元素,也可以通過循環(huán)遍歷
序列中的元素。
以下數(shù)據(jù)類型均屬于序列:
字符串(str)
列表(list)
元組(tuple)
集合(set)
字典(dict)
字節(jié)數(shù)組(bytearray)
字節(jié)數(shù)組(bytes)
其中,字符串、列表和元組是最常用的序列類型。
序列是Python中最基本的數(shù)據(jù)結(jié)構(gòu)之一,它們可以存儲多個值,并且可以通過索引訪問這些值。
3.1 字節(jié)數(shù)組(bytearray)
字節(jié)數(shù)組(bytearray)是Python中的一種數(shù)據(jù)類型,它是一個可變的序列,由一系列的字節(jié)組成。
每個字節(jié)都是一個8位的二進制數(shù),可以表示0-255之間的整數(shù)。
字節(jié)數(shù)組可以通過索引訪問和修改其中的元素,也可以進行切片操作。
字節(jié)數(shù)組常用于處理二進制數(shù)據(jù),如圖像、音頻、視頻等文件的讀寫操作。
3.2 字節(jié)數(shù)組(bytes)
字節(jié)數(shù)組(bytes)是一種數(shù)據(jù)類型,它表示一個由字節(jié)(8位二進制數(shù))組成的序列。
字節(jié)數(shù)組可以用來存儲二進制數(shù)據(jù),例如圖像、音頻、視頻等文件。
字節(jié)數(shù)組在Python中是不可變的,這意味著一旦創(chuàng)建,就不能修改其中的元素。
可以使用索引來訪問字節(jié)數(shù)組中的元素,每個元素都是一個整數(shù),范圍從0到255。
3.3 字節(jié)數(shù)組(bytearray)和字節(jié)數(shù)組(bytes)是什么的區(qū)別
可變性:bytearray是可變的,而bytes是不可變的。這意味著可以修改bytearray中的元素,但不能修改bytes中的元素。
內(nèi)存占用:bytearray比bytes占用更多的內(nèi)存,因為bytearray需要額外的內(nèi)存來存儲其可變性。
支持的操作:由于bytearray是可變的,它支持更多的操作,如添加、刪除和修改元素。而bytes只支持不可變的操作,如索引和切片。
用途:bytearray通常用于需要修改二進制數(shù)據(jù)的情況,如網(wǎng)絡編程和加密。而bytes通常用于不需要修改的情況,如文件讀取和傳輸數(shù)據(jù)。
4. random.betavariate()-返回一個0到1之間的隨機數(shù)
beta [?bi?t?]:希臘字母表中第二個字母,β。
variate[?v??r??t]:變量。
betavariate:β變量。
【作用】
random.betavariate()用于生成一個服從Beta分布
的隨機數(shù)。
【語法】
import random random.betavariate(alpha, beta)
【參數(shù)說明】
alpha:Beta分布的第一個參數(shù),必須大于0。
beta:Beta分布的第二個參數(shù),必須大于0。
alpha[?ælf?]:希臘字母表中第一個字母,α。
beta [?bi?t?]:希臘字母表中第二個字母,β。
【返回值】
返回一個服從Beta分布
的隨機數(shù)。
【代碼示例】
# 導入random庫 import random x = random.betavariate(2, 5) print(x)
【終端輸出】
random.choice(sequence)
調(diào)用模塊的函數(shù)語法:模塊名.函數(shù)名()
。
【代碼解析】
random是模塊名。
模塊名和函數(shù)名之間有個英文小圓點
.
。betavariate是函數(shù)名。
alpha=2
beta=5
上述代碼中,alpha=2,beta=5,生成的隨機數(shù)x服從Beta(2, 5)分布。
5. 什么是Beta分布
Beta分布是一種概率分布,常用于描述隨機變量在0到1之間的取值情況。
它的概率密度函數(shù)形式為:
其中, 是隨機變量的取值, 和 是分布的兩個參數(shù), 是Beta函數(shù),用于歸一化概率密度函數(shù)。
Beta分布的形狀由參數(shù) 和 控制,當 時,Beta分布退化為均勻分布。
當 和 時,Beta分布呈現(xiàn)出“鐘形曲線”的形狀,且分布的峰值在 處。
Beta分布在統(tǒng)計學中有廣泛的應用,例如用于描述概率、比例、概率密度等。
【備注】
上述內(nèi)容是百度粘貼復制過來的。
具體這個beta分布有什么用我也不明白。
6. random.random()-返回一個0.0到1.0之間的隨機浮點數(shù)
random [?rænd?m]:自由。
【作用】
random 模塊的 random 函數(shù)是一個隨機浮點數(shù)生成函數(shù)。
【語法】
random.random()
【參數(shù)說明】
該函數(shù)不需要傳入任何參數(shù)。
【返回值】
返回一個0.0到1.0之間的隨機浮點數(shù)。
【代碼示例】
import random x = random.random() print(x)
【終端輸出】
0.6746022416797438
7. random.random()和random.betavariate(2,5)的區(qū)別
random.random()用于生成一個0到1之間的隨機浮點數(shù),每次調(diào)用該函數(shù)都會生成一個新的隨機數(shù)。
random.betavariate(2,5)是random模塊中的函數(shù),用于生成一個符合Beta分布的隨機數(shù)。
其中參數(shù)2和5分別表示Beta分布的兩個參數(shù)alpha和beta。
每次調(diào)用該函數(shù)都會生成一個新的隨機數(shù),但是生成的隨機數(shù)不是均勻分布的,而是符合Beta分布的。
【小結(jié)】
random是徹底的隨機選取一個數(shù)。
betavariate每次返回的數(shù)雖然不一樣,但是它返回的數(shù)符合Beta分布。
8. random.choice()-從非空序列中返回一個隨機元素
choice[t???s]:選擇。
【作用】
random.choice()用于從一個序列中隨機選擇一個元素并返回。
【語法】
random.choice(sequence)
【參數(shù)說明】
sequence[?si?kw?ns]:序列。
表示要從sequence中選擇元素,sequence可以是列表、元組、字符串等序列。
【返回值】
返回序列中隨機選擇的一個元素。
8.1 從列表中隨機選擇一個元素
import random my_list = [1, 2, 3, 4, 5] print(random.choice(my_list))
【終端輸出】
2
8.2 從元組中隨機選擇一個元素
import random my_tuple = ('a', 'b', 'c', 'd', 'e') print(random.choice(my_tuple))
【終端輸出】
c
8.3 從字符串中隨機選擇一個字符
import random my_str = '安迪python學習筆記' print(random.choice(my_str))
【終端輸出】
筆
8.4 從字典中隨機選擇一個元素
【選擇一個鍵】
import random my_dict = {"a": 1, "b": 2, "c": 3} random_key = random.choice(list(my_dict.keys())) print(random_key)
【終端輸出】
b
【選擇一個值】
import random my_dict = {"a": 1, "b": 2, "c": 3} random_value = random.choice(list(my_dict.values())) print(random_value)
【終端輸出】
1
【溫馨提示】
字典是無序的。
因此不能直接使用random.choice()函數(shù)從字典中隨機選擇一個鍵或值。
需要先將字典的鍵轉(zhuǎn)換為列表,然后再使用random.choice()函數(shù)。
9. 字典知識回顧
【定義】
字典是一種無序的鍵值對集合,用花括號 {}
來表示
鍵和值之間用冒號 :
分隔。
每個鍵值對之間用逗號 ,
分隔。
鍵必須是唯一的,但值可以不唯一。
【語法】
my_dict = {key1: value1, key2: value2, key3: value3, ...}
key1、key2、key3 等是字典的鍵。
value1、value2、value3 等是字典的值。
【字典操作】
取出所有鍵,并轉(zhuǎn)換成列表:
list(dict.keys())
,返回一個包含字典中所有鍵的列表。取出一個鍵,用列表索引方式取出一個鍵,
list(my_dict.keys())[0]
。取值:
dict[key]
。
9.1 取出字典的所有鍵
my_dict = {'a': 1, 'b': 2, 'c': 3} keys = my_dict.keys() print(keys)
【終端輸出】
dict_keys(['a', 'b', 'c'])
my_dict.keys()
是一個Python字典(dictionary)方法,用于返回字典中所有鍵(key)的列表。
具體來說,它返回一個可迭代的視圖對象,其中包含字典中所有鍵的列表。
my_dict
是要獲取值的字典對象。
keys
表示要返回包含所有鍵的列表。
keys()
方法返回的是一個特殊的dict_keys
對象,而不是普通的列表。
如果需要將其轉(zhuǎn)換為列表,可以使用list()
函數(shù)。
my_dict = {'a': 1, 'b': 2, 'c': 3} keys = list(my_dict.keys()) print(keys)
【終端輸出】
['a', 'b', 'c']
9.2 取出字典的一個鍵
用列表[索引]
的方式從列表中取出一個元素,取到的就是列表的一個鍵。
my_dict = {'a': 1, 'b': 2, 'c': 3} keys = list(my_dict.keys())[0] print(keys)
【終端輸出】
a
9.3 取出字典的所有值
my_dict = {'a': 1, 'b': 2, 'c': 3} values = my_dict.values() print(values)
【終端輸出】
dict_values([1, 2, 3])
my_dict
是要獲取值的字典對象。
values
表示要返回包含所有值的列表。
values()
方法返回的是一個特殊的dict_values
對象,而不是普通的列表。
如果需要將其轉(zhuǎn)換為列表,可以使用list()
函數(shù)。
my_dict = {'a': 1, 'b': 2, 'c': 3} values = list(my_dict.values()) print(values)
【終端輸出】
[1, 2, 3]
9.4 取出字典的一個值
字典取值有以下4種方法:
使用方括號
[]
取值:可以通過鍵名直接訪問字典中的值,例如:dict[key]。使用
get()
方法取值:get()方法可以通過鍵名獲取字典中的值,如果鍵名不存在,則返回None或者指定的默認值。例如:dict.get(key, default=None)。使用
items()
方法取值:items()方法可以返回字典中所有鍵值對的元組列表,可以通過遍歷列表獲取字典中的所有值。例如:for key, value in dict.items()。使用
values()
方法取值:values()方法可以返回字典中所有的值,可以通過遍歷列表獲取字典中的所有值。例如:for value in dict.values()。
9.5 方括號[]
取值
my_dict = {'a': 1, 'b': 2, 'c': 3} values = my_dict['a'] print(values)
【終端輸出】
1
my_dict
是要獲取值的字典對象。
a
是字典中的一個鍵(key)。
[a]
表示取鍵a對應的值。
9.6 列表索引取值
my_dict = {'a': 1, 'b': 2, 'c': 3} values = list(my_dict.values())[0] print(values)
【終端輸出】
1
10. random.choices()返回序列的隨機元素
【作用】
random.choices()函數(shù)用于從給定的序列中隨機選擇指定數(shù)量的元素,可以重復選擇同一個元素。
【語法】
random.choices(population, weights=None, *, cum_weights=None, k=1)
population[?p?pju?le??n]:總體。
weights[we?ts]:體重、權重。
cumulative[?kju?mj?l?t?v]:累積的。
cum_weights:累計權重。
【參數(shù)說明】
population:必選參數(shù),表示要操作的序列,可以是列表、元組、字符串等。
weights:可選參數(shù),表示每個元素的相對權重,必須是一個與population長度相同的列表,如果不指定,則所有元素的權重相等。
cum_weights:可選參數(shù),表示每個元素的累積權重,必須是一個與population長度相同的列表,如果不指定,則根據(jù)weights計算出累積權重。
k:可選參數(shù),表示要選擇的元素數(shù)量,默認為1。
【相對權重和累計權重的區(qū)別】
相對權重
是指在一組數(shù)據(jù)中,每個數(shù)據(jù)所占的比例或重要性。相對權重的計算方法是將每個數(shù)據(jù)除以
所有數(shù)據(jù)的總和,得到每個數(shù)據(jù)的相對權重值。相對權重通常用于比較不同數(shù)據(jù)之間的重要性或影響力。
累計權重
是指在一組數(shù)據(jù)中,每個數(shù)據(jù)的權重值逐步累加
的過程。累計權重的計算方法是將每個數(shù)據(jù)的權重值依次相加
,得到每個數(shù)據(jù)的累計權重值。累計權重通常用于計算某個數(shù)據(jù)在整個數(shù)據(jù)集中的重要性或排名。
例如,如果有一個列表[1,2,3,4]
,并且指定了相對權重[1,2,3,4]
,則元素4的被選中的概率是元素1的概率的4倍。
例如,如果有一個列表[1,2,3,4]
,并且指定了累積權重[1,3,6,,0]
,則元素4的概率被選中的概率是元素1的概率的10倍。
如果還是不明白,可以這樣理解:
當weight=[1, 2, 3, 4]時,則cum_weights=[1, 3, 6, 10]
- 1+2=3
- 1+2+3=6
- 1+2+3+4=10
這就是逐步累加的過程。
如果還是不明白,那就放棄吧,對現(xiàn)階段學Python沒什么意義,寫出來就是擴展點大家的知識面而已。
【返回值】
返回一個列表,包含k個隨機選擇的元素。
【代碼示例】
import random # 從列表中隨機選擇一個元素,沒有k參數(shù)的時候,默認取1個元素 lst = ['張三', '李四', '王五', '趙六'] print(random.choices(lst)) # # 從列表中隨機選擇兩個元素 k=2,取2個元素 print(random.choices(lst, k=2)) # # 從列表中隨機選擇三個元素,k=3,取3個元素 # 其中張三的權重為2,李四的權重為1,王五和趙六的權重為3 print(random.choices(lst, weights=[2, 1, 3, 3], k=3))
【終端輸出】
['張三']
['趙六', '張三']
['趙六', '王五', '李四']
11. random.choices和random.choice的異同
【相同點】
都是從給定的序列中隨機選擇元素。
都可以用于列表、元組、字符串等序列類型。
【不同點】
random.choices可以從序列中選擇多個元素,而random.choice只能選擇一個元素。
random.choices可以指定每個元素被選擇的概率,而random.choice選擇的是等概率的。
random.choices返回的是一個列表,而random.choice返回的是一個單獨的元素。
12. random.expovariate-返回指數(shù)分布的隨機數(shù)
expovariate指數(shù)變量。
【作用】
random.expovariate用于生成指數(shù)分布的隨機數(shù)。
【什么是指數(shù)分布】
指數(shù)分布是一種連續(xù)概率分布,常用于描述一些隨機事件的時間間隔,如等待時間、到達時間等。
它的概率密度函數(shù)為f(x) = λe^(-λx),其中λ為分布參數(shù),x為隨機變量。
指數(shù)分布具有無記憶性,即在已知事件發(fā)生的時間點后,下一次事件發(fā)生的時間與上一次事件發(fā)生的時間無關。
指數(shù)分布在可靠性工程、生物學、經(jīng)濟學等領域中有廣泛應用。
【語法】
random.expovariate(lambd)
【參數(shù)說明】
lambd:拉姆達,希臘字母的第11個, λ。
lambd:指數(shù)分布的參數(shù),也稱為速率參數(shù),表示單位時間內(nèi)發(fā)生事件的平均次數(shù)。
lambd表示1.0除以所需的平均值,該指為非0。
如果lambd為正,返回的值的范圍為0到正無窮大。
如果lambd為負,返回的值的范圍從負無窮大到0.
【返回值】
返回一個符合指數(shù)分布的隨機數(shù)。
【lambd為正】
import random lambd = 0.5 x = random.expovariate(lambd) print(x)
【終端輸出】
0.5572420727942687
【lambd為負】
import random lambd = -0.8 x = random.expovariate(lambd) print(x)
【終端輸出】
-0.2489617561974653
13. random.gammavariate-返回以Gamma分布的隨機數(shù)
gammavariate:伽瑪變量。
gamma:伽瑪,希臘字母表中第3字母 γ。
【作用】
random.gammavariate函數(shù)用于生成符合Gamma分布的隨機數(shù)。
【什么是Gamma分布】
Gamma分布是一種連續(xù)概率分布,常用于描述隨機事件發(fā)生的時間間隔或持續(xù)時間。
它的概率密度函數(shù)為:
【返回值】
返回一個符合Gamma分布的隨機數(shù)。
【代碼示例】
import random # 生成符合Gamma分布的隨機數(shù) alpha = 2 beta = 1 x = random.gammavariate(alpha, beta) print(x)
【終端輸出】
2.0457066268448707
【生成5個服從Gamma分布的隨機數(shù)】
import random for i in range(5): print(random.gammavariate(2, 1))
【終端輸出】
0.36675044434061005
3.5617162671776015
2.441417900614287
2.913293585705838
3.0622343724484318
14. random.gauss-一個符合高斯分布的隨機數(shù)
gauss[ɡa?s]:高斯。
【作用】
random.gauss函數(shù)用于生成一個符合高斯分布的隨機數(shù)。
【什么是高斯分布】
高斯分布,也稱為正態(tài)分布,是一種常見的概率分布。
它的概率密度函數(shù)呈鐘形曲線,中心對稱,具有一個峰值,兩側(cè)逐漸趨于無窮小。
高斯分布的特點是均值和標準差決定了它的形狀和位置。
在自然界和社會現(xiàn)象中,很多現(xiàn)象都可以用高斯分布來描述,例如身高、體重、智力、收入等。高斯分布在統(tǒng)計學、物理學、工程學、經(jīng)濟學等領域都有廣泛的應用。
【語法】
random.gauss(mu, sigma)
【參數(shù)說明】
mu:高斯分布的均值(期望值)。
sigma:高斯分布的標準差。
mu:繆,希臘字母表中第12個字母, μ。
sigma:西格瑪,希臘字母表中第18個字母,σ。
【返回值】
返回一個符合高斯分布的隨機數(shù)。
【代碼示例】
import random mu = 0 # 均值 sigma = 1 # 標準差 x = random.gauss(mu, sigma) print(x)
【終端輸出】
-1.0577354695155303
以上就是python random模塊常用函數(shù)使用教程的詳細內(nèi)容,更多關于python random模塊函數(shù)的資料請關注腳本之家其它相關文章!
相關文章
python中文件變化監(jiān)控示例(watchdog)
這篇文章主要介紹了python中文件變化監(jiān)控示例(watchdog),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-10-10python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形)
這篇文章主要介紹了python 使用turtule繪制遞歸圖形(螺旋、二叉樹、謝爾賓斯基三角形) ,需要的朋友可以參考下2019-05-05