首頁技術(shù)文章正文

Python培訓(xùn):隨機(jī)數(shù)函數(shù)

更新時間:2022-09-14 來源:黑馬程序員 瀏覽量:

  Python中的random模塊用于生成隨機(jī)數(shù),它提供了很多函數(shù)。接下來,我們針對常見的隨機(jī)數(shù)函數(shù)進(jìn)行講解,具體如下。

  1.random.random()

  返回0與1之間的隨機(jī)浮點(diǎn)數(shù)N,范圍為0<=N<1.0。

  接下來,通過一個案例來演示,如例6-16所示。

  例6-16 隨機(jī)數(shù)函數(shù)

import random
# 生成第1個隨機(jī)數(shù)
print("random():", random.random())
# 生成第2個隨機(jī)數(shù)
print("random():", random.random())

  運(yùn)行結(jié)果如圖6-26所示。

1663120513169_隨機(jī)數(shù)1.jpg

  圖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所示。

1663120584673_隨機(jī)數(shù)2.jpg

  圖6-27 運(yùn)行結(jié)果

  3.random.randint(a,b)

  返回一個隨機(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)) # 該語句是錯誤的,下限(a)必須小于上限(b)。

  運(yùn)行結(jié)果如圖6-28所示。

1663120652705_隨機(jī)數(shù)3.jpg

  圖6-28 運(yùn)行結(jié)果

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

  返回指定遞增基數(shù)集合中的一個隨機(jī)數(shù),基數(shù)默認(rèn)值為1。其中,start參數(shù)用于指定范圍內(nè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]序列中獲取一個隨機(jī)數(shù)。

  5.random.choice(sequence)

  從sequence中返回一個隨機(jī)的元素。其中,sequence參數(shù)可以是列表、元組或字符串。示例代碼如下:

random.choice("學(xué)習(xí) Python")
random.choice(["JGood", "is", "a", "handsome", "boy"])
random.choice(("Tuple", "List", "Dict"))

  需要注意的是,若sequence為空,則會引發(fā)IndexError異常。

  6.random.shuffle(x[,random])

  用于將列表中的元素打亂順序,俗稱為洗牌。示例代碼如下:

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個元素作組成一個新的子序列進(jìn)行返回,不會修改原有序列。示例代碼如下:

list_num = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
slice=random.sample(list_num,5) # 從list_num中隨機(jī)獲取5個元素,作為一個片斷返回
print(slice)
print(list_num) # 原有序列并沒有改變。
# ----結(jié)果(不同機(jī)器上的結(jié)果可能不一樣。)
# [8, 2, 3, 4, 9]
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


分享到:
在線咨詢 我要報名
和我們在線交談!