更新時(shí)間:2022-09-14 來(lái)源:黑馬程序員 瀏覽量:
Python中的random模塊用于生成隨機(jī)數(shù),它提供了很多函數(shù)。接下來(lái),我們針對(duì)常見(jiàn)的隨機(jī)數(shù)函數(shù)進(jìn)行講解,具體如下。
1.random.random()
返回0與1之間的隨機(jī)浮點(diǎn)數(shù)N,范圍為0<=N<1.0。
接下來(lái),通過(guò)一個(gè)案例來(lái)演示,如例6-16所示。
例6-16 隨機(jī)數(shù)函數(shù)
import random # 生成第1個(gè)隨機(jī)數(shù) print("random():", random.random()) # 生成第2個(gè)隨機(jī)數(shù) print("random():", random.random())
運(yùn)行結(jié)果如圖6-26所示。
圖6-26 運(yùn)行結(jié)果
2.random.uniform(a,b)
返回a與b之間的隨機(jī)浮點(diǎn)數(shù)N,范圍為[a,b]。如果a的值小于b的值,則生成的隨機(jī)浮點(diǎn)數(shù)N的取值范圍為a<=N<=b;如果a的值大于b的值,則生成的隨機(jī)浮點(diǎn)數(shù)N的取值范圍為b<=N<=a。示例代碼如下:
import random print("random:", random.uniform(50,100)) print("random:", random.uniform(100,50))
運(yùn)行結(jié)果如圖6-27所示。
圖6-27 運(yùn)行結(jié)果
3.random.randint(a,b)
返回一個(gè)隨機(jī)的整數(shù)N,N的取值范圍為a<=N<=b。需要注意的是,a和b的取值必須為整數(shù),并且a的值一定要小于b的值,示例代碼如下:
import random # 生成隨機(jī)數(shù)為N,N的取值范圍為12 <= N <=20 print(random.randint(12, 20)) # 生成的隨機(jī)數(shù)為N,N的結(jié)果永遠(yuǎn)是20 print(random.randint(20, 20)) # print(random.randint(20, 10)) # 該語(yǔ)句是錯(cuò)誤的,下限(a)必須小于上限(b)。
運(yùn)行結(jié)果如圖6-28所示。
圖6-28 運(yùn)行結(jié)果
4.random.randrange([start],stop[,step])
返回指定遞增基數(shù)集合中的一個(gè)隨機(jī)數(shù),基數(shù)默認(rèn)值為1。其中,start參數(shù)用于指定范圍內(nèi)的開(kāi)始值,其包含在范圍內(nèi);end參數(shù)用于指定范圍內(nèi)的結(jié)束值,其不包含在范圍內(nèi);step表示遞增基數(shù)。
上述這些參數(shù)必須為整數(shù)。例如random.randrange(10,100,2)相當(dāng)于從[10,12,14,16,...96,98]序列中獲取一個(gè)隨機(jī)數(shù)。
5.random.choice(sequence)
從sequence中返回一個(gè)隨機(jī)的元素。其中,sequence參數(shù)可以是列表、元組或字符串。示例代碼如下:
random.choice("學(xué)習(xí) Python") random.choice(["JGood", "is", "a", "handsome", "boy"]) random.choice(("Tuple", "List", "Dict"))
需要注意的是,若sequence為空,則會(huì)引發(fā)IndexError異常。
6.random.shuffle(x[,random])
用于將列表中的元素打亂順序,俗稱(chēng)為洗牌。示例代碼如下:
demo_list = ["Python", "is", "powerful", "simple", "and so on..."] random.shuffle(demo_list) print(demo_list) # ----結(jié)果(不同機(jī)器上的結(jié)果可能不一樣。) # ['powerful', 'simple', 'is', 'Python', 'and so on...']
7.random.sample(sequence,k)
從指定序列中隨機(jī)獲取k個(gè)元素作組成一個(gè)新的子序列進(jìn)行返回,不會(huì)修改原有序列。示例代碼如下:
list_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] slice=random.sample(list_num,5) # 從list_num中隨機(jī)獲取5個(gè)元素,作為一個(gè)片斷返回 print(slice) print(list_num) # 原有序列并沒(méi)有改變。 # ----結(jié)果(不同機(jī)器上的結(jié)果可能不一樣。) # [8, 2, 3, 4, 9] # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]