1. 程式人生 > >6.6 random--偽隨機數的生成

6.6 random--偽隨機數的生成

系統時間 pdf 0.11 生成 system rac lam mil bject

本模塊提供了生成要求安全度不高的隨機數。假設須要更高安全的隨機數產生。須要使用os.urandom()或者SystmeRandom模塊。

random.seed(a=None, version=2)

初始化隨機數據的種子數值。假設aNone值,會取採用當前系統時間作為種子值。假設a是一個int類型的值。則會直接使用。參數version是版本號兼容,假設為版本號2時,對於strbytesbytearray採用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)

ab區間返回一個隨機浮點數。假設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的值。返回值的區間在01之間。

樣例:

#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是平均角度,使用弧度表示,範圍在02*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--偽隨機數的生成