Python Random隨機數
Python產生隨機數的功能在random模塊中實現。實現了各種分布的偽隨機數生成器
該模塊能夠生成0到1的浮點隨機數,也能夠在一個序列中進行隨機選擇。產生的隨機數能夠是均勻分布。高斯分布,對數正態分布。負指數分布以及alpha。beta分布。可是呢,這些隨機數不適合使用在以加密為目的的應用中
你也能夠自己派生一個Random類的子類,自己去實現子類中的random(),seed()。getstate(),setstate()函數,一個新的產生器能夠提供一個getrandbits()方法。這同意randrange()產生隨意範圍的隨機數
警告:
這個模塊中的隨機數是偽隨機數,不能應用於安全加密,假設你須要一個真正的password安全隨機數,你須要使用os.urandom()或者random模塊中的SystemRandom類來實現
參考官方文檔。random模塊的經常使用函數例如以下:
1、random.random()
用於生成一個0到1的隨機浮點數:0<= n < 1.0
2、random.uniform(a,b)
用於生成一個指定範圍內的隨機浮點數。兩個參數當中一個是上限。一個是下限。假設a > b,則生成的隨機數n: a <= n <= b。假設 a <b,則 b <= n <= a。
3、random.randint(a,b)
用於生成一個指定範圍內的整數。當中參數a是下限,參數b是上限,生成的隨機整數數n:a <= n <= b
4、random.choice(seq)
從序列中獲取一個隨機元素。參數seqe表示一個有序類型,能夠是list,tuple,array。str等
5、random.randrange([start,] stop[, step])
從指定範圍內,按指定基數遞增的集合中 獲取一個隨機數。如:random.randrange(10,100, 2),結果相當於從[10, 12, 14, 16, ... 96, 98]序列中獲取一個隨機數。random.randrange(10,100, 2)在結果上與 random.choice(range(10, 100, 2) 等效。
6、random.shuffle(x
用於將一個列表中的元素打亂。能夠用這個函數寫一個洗牌的程序
7、random.sample(seq,k)
從指定序列中隨機獲取指定長度的片斷。sample函數不會改動原有序列,假設k大於seq元素個數的話會報錯。
>>> random.random() # Random float x, 0.0 <= x < 1.0 0.37444887175646646 >>> random.uniform(1, 10) # Random float x, 1.0 <= x < 10.0 1.1800146073117523 >>> random.randrange(10) # Integer from 0 to 9 7 >>> random.randrange(0, 101, 2) # Even integer from 0 to 100 26 >>> random.choice('abcdefghij') # Single random element 'c' >>> items = [1, 2, 3, 4, 5, 6, 7] >>> random.shuffle(items) >>> items [7, 3, 2, 5, 6, 4, 1] >>> random.sample([1, 2, 3, 4, 5], 3) # Three samples without replacement [4, 1, 5]
Python Random隨機數