6.6 random--伪随机数的生成

本模块提供了生成要求安全度不高的随机数。如果需要更高安全的随机数产生,需要使用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 深圳

你可能感兴趣的:(算法,python,milang)