在前面我們曾多次提到過random模塊,在這節(jié)將詳細的介紹一下random模塊的用法。random模塊主要為我們提供一些生成隨機數(shù)的功能,下面表格總結(jié)了random模塊中幾個常用函數(shù)。
函數(shù)名 | 功能 |
random.random() | 生成一個[0,1)的實數(shù)。 |
random.randint(a,b) | 生成一個[a,b]的數(shù)字,包含a和b。 |
random.randrange(a,b) | 生成一個[a,b)的數(shù)字,包含a,不包含b。 |
random.shuffle(x) | 把序列x打亂。 |
random.choice(x) | 從x中返回一個隨機項,x需要是一個可變序列。 |
random.uniform(a,b) | 生成一個a,b之間的浮點數(shù),區(qū)間可以是浮點數(shù)。 |
1. random.random()
生成一個0-1的隨機浮點數(shù),看下面的例子:
import random a = random.random() b = random.random() c = random.random() print(a) print(b) print(c)
輸出結(jié)果為:
0.787965560268062 0.20524486179856316 0.8732074424182436
我們可以看出返回的浮點數(shù)的值和位數(shù)都不一定相同。
2. random.randint(a,b)
我需要注意randint和randrange的區(qū)別,randint是包含a和b,后面會提到的randrange是不含a和b的。
我們可以通過測試來看一下是否包含上下限,代碼如下:
import random a = random.randint(1,3) b = random.randint(1,3) c = random.randint(1,3) print(a) print(b) print(c)
輸出結(jié)果為:
3 1 2
我們可以看出是包含a和b的值的。
3. random.randrange(a,b)
我們主要通過測試來看一下這種方法是否包含a和b的值,看下面代碼:
import random a = random.randrange(1,3) b = random.randrange(1,3) c = random.randrange(1,3) d = random.randrange(1,3) print(a) print(b) print(c) print(d)
輸出結(jié)果為:
2 2 1 2
通過測試結(jié)果我們可以看出只有1和2,是不包含下界3的,大家也可以自己嘗試一下運行一下。
4. random.shuffle(x)
random.shuffle(x)函數(shù)我們在第二節(jié)中使用過,它可以將一個序列進行重新排序,但是需要注意,它只針對于可改變的序列,因此它常被用于打亂列表中的元素。
import random a = ['d','o','t','c','p','p'] print('打亂前的列表:',a) random.shuffle(a) print('打亂后的列表:',a)
輸出結(jié)果為:
打亂前的列表: ['d', 'o', 't', 'c', 'p', 'p'] 打亂后的列表: ['c', 'd', 'p', 'p', 't', 'o']
5. random.choice(x)
random.choice(x)可以返回一個序列中的一個隨機元素,它的使用方式如下:
import random a = ['d','o','t','c','p','p'] b = 'dotcpp' c = ('d','o','t','c','p','p') print(random.choice(a)) print(random.choice(b)) print(random.choice(c))
輸出結(jié)果為:
o d p
6. random.uniform(a,b)
用于生成指定范圍內(nèi)的隨機浮點數(shù),代碼如下:
import random a = random.uniform(1.1,3.3) b = random.uniform(5,6) c = random.uniform(100,200) print(a) print(b) print(c)
輸出結(jié)果為:
2.5802656579509087 5.977193880181603 141.03779834775494
7. 總結(jié)
關(guān)于random模塊的功能就 講到這里,上面六種用法囊括了生成隨機數(shù)的常用方法,如果想要使用更多的random模塊中的方法,可以在Python幫助文檔中進行查閱學習。
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎(chǔ)C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程