1. 程式人生 > >Python Random隨機數

Python Random隨機數

ack 分布 for 有序 orm size 表示 ets con

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

[,random])

用於將一個列表中的元素打亂。能夠用這個函數寫一個洗牌的程序

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隨機數