random
random模块实现了各种分布的伪随机数生成器。该模块提供的函数实际上是 random.Random
类的隐藏实例的绑定方法,你可以实例化自己的 Random
类实例以获取不共享状态的生成器。
簿记功能
-
random.seed(a=None, version=2)
初始化随机数生成器。
-
random.getstate()
返回捕获生成器当前内部状态的对象, 这个对象可以传递给
setstate()
来恢复状态。 -
random.setstate(state)
state 应该是从之前调用
getstate()
获得的,并且setstate()
将生成器的内部状态恢复到getstate()
被调用时的状态。 -
random.getrandbits(k)
返回带有 k 位随机的Python整数。
生成整数
-
random.randrange(stop)
&rangdom.randrange(start,stop[,step])
从
range(start, stop, step)
返回一个随机选择的元素, 这相当于choice(range(start, stop, step))
,但实际上并没有构建一个 range 对象。>>> random.randrange(10)#区间[0,9] 3 >>> random.randrange(1,10,2)#(1,3,5,7,9) 5
-
random.randint(a,b)
返回随机整数 N 满足
a <= N <= b
。相当于randrange(a, b+1)
。>>> random.randint(1,6)#1<=N<=6 2 >>> random.randint(1,6) 3
序列函数
-
random.choice(seq)
从序列seq中随机取一个元素。
>>> names = ["Tom", "Jane", "Bob", "Xiaoming"] >>> random.choice(names) 'Jane'
-
random.choices()
-
random.shuffle(x[,random])
将序列x顺序打乱;如果要改变一个不可变的序列并返回一个新的打乱列表,请使用
sample(x, k=len(x))
。>>> random.shuffle(names) >>> names ['Jane', 'Xiaoming', 'Tom', 'Bob']
-
random.sample(population, k)
从总样本中返回一个长度为k的元素样本——用于无重复的随机抽样。
>>> import random >>> random.sample(range(10),5) [2, 8, 1, 3, 0]
实数分布
-
random.random()
返回 [0.0, 1.0) 范围内的下一个随机浮点数。
-
random.uniform(a,b)
返回一个随机浮点数 N ,当
a <= b
时a <= N <= b
,当b < a
时b <= N <= a
。 -
random.betavariate(alpha, beta)
Beta分布:参数的条件是
alpha > 0
和beta > 0
, 返回值的范围介于 0 和 1 之间。 -
random.expovariate(lambd)
指数分布
-
random.gammavariate(alpha, beta)
Gamma分布:参数的条件是
alpha > 0
和beta > 0
-
random.gauss(mu, sigma)
高斯分布:mu是平均值,sigma是标准差。
-
random.normalvariate(mu, sigma)
正态分布:mu是平均值,sigma是标准差。
-
random.paretovariate(alpha)
帕累托分布:alpha是形状参数。
-
random.weibullvariate(alpha,beta)
威布尔分布:alpha是比例参数,beta是形状参数。
>>> import random
>>>
>>> random.random()#0<=N<1
0.41855757752030276
>>> random.uniform(3,4)#3<=N<4
3.1447319861455387
随机数生成器
-
random.Random([seed])
random模块默认使用的伪随机数生成器。
-
random.SystemRanom([seed])
使用
os.urandom()
函数的类,用从操作系统提供的源生成随机数,但这并非适用于所有系统。