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