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