6.6 random--偽隨機數的生成
本模塊提供了生成要求安全度不高的隨機數。假設須要更高安全的隨機數產生。須要使用os.urandom()或者SystmeRandom模塊。
random.seed(a=None, version=2)
初始化隨機數據的種子數值。假設a是None值,會取採用當前系統時間作為種子值。假設a是一個int類型的值。則會直接使用。參數version是版本號兼容,假設為版本號2時,對於str。bytes。bytearray採用int類型返回;在版本號1時,採用hash()返回。
樣例:
#python 3.4
from random import *
r = seed()
print(r)
r = random()
print(r)
r = random()
print(r)
結果輸出例如以下:
None
0.25563594631743225
0.8596359931999921
random.getstate()
獲取當前隨機數的環境狀態,以便下次再使用。
樣例:
#python 3.4
from random import *
r = seed()
print(r)
r = getstate()
print(r)
結果輸出例如以下:
None
(3, (2147483648, 1806585935, 2218797231, 963762379, 2448530300, 4223961651, 2167919184, 3727107355, 2403035413,
...
1296424577, 1100183651, 306611027, 444923926, 1168100930, 624), None)
random.setstate(state)
恢復上一次獲取的狀態,上次的狀態使用getstate()來獲取。
樣例:
#python 3.4
from random import *
r = seed()
print(r)
r = getstate()
print(random())
setstate(r)
print(random())
結果輸出例如以下:
None
0.38424833141530745
0.38424833141530745
random.getrandbits(k)
返回指定k
樣例:
#python 3.4
from random import *
r = seed()
r = getrandbits(4)
print(r)
r = getrandbits(4)
print(r)
結果輸出例如以下:
4
9
random.randrange(stop)
random.randrange(start, stop[, step])
返回一個指定範圍內的隨機值。stop是最大值的整數邊界。start是起始值。step是每一個值之間的間隔。返回的值大於等於start,小於stop。
樣例:
#python 3.4
from random import *
r = seed()
r = randrange(5)
print(r)
r = randrange(0, 10, 2)
print(r)
結果輸出例如以下:
2
8
random.randint(a, b)
返回一個整數,它的範圍是a <= N <=b。
樣例:
#python 3.4
from random import *
r = seed()
r = randint(1, 2)
print(r)
r = randint(1, 2)
print(r)
結果輸出例如以下:
2
1
random.choice(seq)
從一個非空的序列裏返回一個元素,假設為空的序列就拋出異常InexError。
樣例:
#python 3.4
from random import *
r = seed()
r = choice([‘a‘, ‘b‘, ‘c‘])
print(r)
r = choice([‘a‘, ‘b‘, ‘c‘])
print(r)
結果輸出例如以下:
c
a
random.shuffle(x[, random])
對序列x進行隨機移動元素的位置。
可選參數random是一個返回隨機浮點數[0.0, 1.0)之間的函數。
樣例:
#python 3.4
from random import *
r = seed()
l = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
print(l)
r = shuffle(l)
print(r, l)
結果輸出例如以下:
[‘a‘, ‘b‘, ‘c‘, ‘d‘]
None [‘b‘, ‘d‘, ‘a‘, ‘c‘]
random.sample(population, k)
從序列population裏隨機地返回k個元素的序列。
樣例:
#python 3.4
from random import *
r = seed()
l = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
print(l)
r = sample(l, 3)
print(r)
結果輸出例如以下:
[‘a‘, ‘b‘, ‘c‘, ‘d‘]
[‘c‘, ‘a‘, ‘b‘]
random.random()
返回範圍在[0.0, 1.0)之間的隨機浮點數。
樣例:
#python 3.4
from random import *
r = seed()
r = random()
print(r)
結果輸出例如以下:
0.3916060348292988
random.uniform(a, b)
在a和b區間返回一個隨機浮點數。假設a <= b則返回 a <= N <= b。假設 b < a則返回b <= N <= a。
樣例:
#python 3.4
from random import *
r = seed()
r = uniform(1.0, 2.5)
print(r)
r = uniform(8.0, 2.5)
print(r)
結果輸出例如以下:
1.6498941793878243
4.22188785768826
random.triangular(low, high, mode)
返回三角形分布的隨機數, low <= N <= high。參數mode指明眾數出現位置。
樣例:
#python 3.4
from random import *
r = seed()
r = triangular(-3, 8, 0.8)
print(r)
r = triangular(-3, 8, 10)
print(r)
結果輸出例如以下:
1.5058316902823226
0.27606363975774073
random.betavariate(alpha, beta)
返回 beta分布的隨機數,參數alpha是大於0的值,參數beta是大於0的值。返回值的區間在0和1之間。
樣例:
#python 3.4
from random import *
r = seed()
r = betavariate(1, 2)
print(r)
r = betavariate(1, 2)
print(r)
結果輸出例如以下:
0.11852634010531515
0.029427309916706654
random.expovariate(lambd)
返回指數分布的隨機數。
參數lambd是正值。剛從0到正無限大的值。參數lambd是負值。則返回負無窮大到0的值。
樣例:
#python 3.4
from random import *
r = seed()
r = expovariate(1)
print(r)
r = expovariate(-3)
print(r)
結果輸出例如以下:
0.2003044059401706
-0.1785055187658876
random.gammavariate(alpha, beta)
伽瑪分布的隨機數。
x ** (alpha - 1) * math.exp(-x / beta)
pdf(x) = --------------------------------------
math.gamma(alpha) * beta ** alpha
樣例:
#python 3.4
from random import *
r = seed()
r = gammavariate(1, 2)
print(r)
r = gammavariate(1, 2)
print(r)
結果輸出例如以下:
0.5413328891492575
4.139239480698503
random.gauss(mu, sigma)
返回高斯分布的隨機數。
參數mu是一個平均數,sigma是絕對偏差。
樣例:
#python 3.4
from random import *
r = seed()
r = gauss(1, 2)
print(r)
r = gauss(1, 2)
print(r)
結果輸出例如以下:
2.8846358328647543
-0.7848726717436769
random.lognormvariate(mu, sigma)
對數分布的隨機數。mu是一個平均數,sigma是一個絕對偏差。
樣例:
#python 3.4
from random import *
r = seed()
r = lognormvariate(1, 2)
print(r)
r = lognormvariate(1, 2)
print(r)
結果輸出例如以下:
3.4904102483152704
1.7560462679767879
random.normalvariate(mu, sigma)
正態分布的隨機數。參數mu是一個平均數。sigma是標準方差。
樣例:
#python 3.4
from random import *
r = seed()
r = normalvariate(1, 2)
print(r)
r = normalvariate(1, 2)
print(r)
結果輸出例如以下:
1.7317832780485172
2.1163922446170247
random.vonmisesvariate(mu, kappa)
返回馮米塞斯分布的隨機數。參數mu是平均角度,使用弧度表示,範圍在0到2*pi之間。
參數kappa是集中程度參數。是一個大於等於0的值。
樣例:
#python 3.4
from random import *
r = seed()
r = vonmisesvariate(1, 2)
print(r)
r = vonmisesvariate(1, 2)
print(r)
結果輸出例如以下:
0.9831582967095295
2.3340486646429404
random.paretovariate(alpha)
返回帕累托分布的隨機數。參數alpha是一個模型參數。
樣例:
#python 3.4
from random import *
r = seed()
r = paretovariate(2)
print(r)
r = paretovariate(2)
print(r)
結果輸出例如以下:
1.1031942255648155
2.3128974772541597
random.weibullvariate(alpha, beta)
返回韋伯分布的隨機數。參數alpha是縮放系統,參數beta是模型參數。
樣例:
#python 3.4
from random import *
r = seed()
r = weibullvariate(2, 1)
print(r)
r = weibullvariate(2, 1)
print(r)
結果輸出例如以下:
1.1790484913990984
5.519287151687428
class random.SystemRandom([seed])
使用操作系統底層產生隨機數,可是不是全部系統平臺都是可用的。
樣例:
#python 3.4
from random import *
r = SystemRandom()
print(r)
print(r.random())
結果輸出例如以下:
<random.SystemRandom object at 0x03180070>
0.466491601955791
蔡軍生 QQ:9073204 深圳
6.6 random--偽隨機數的生成