Python Random模块 有的时候我们需要在写程序的时候用到随机数生成,在python中有内置模块random可以帮助我们,此外科学计算包numpy中也有random模块实现这一功能。今天,我们介绍一下python内置random模块在这一方面提供了哪些函数。
该模块的函数实际上是random.Random类的隐藏实例random的方法。
产生随机数字
random.random()
随机返回[0.0,1.0)之间浮点数。
random.uniform(a, b)
随机返回浮点数N,如果a<=b,则a<=N<=b,反之则b<=N<=a。使用公式min +(max - min) * random()计算返回值N。
randint(a, b)
随机返回[a,b]之间整数。
randrange(start, stop, step)
随机从range(start,stop, step)产生的序列中挑选一个元素返回。
随机挑选元素
choice(seq)
随机从非空序列seq挑选一个元素返回,若seq为空,则抛出IndexError。
随机排列
suffle(x[, random])
随机打乱序列x中各元素的排列位置。可选参数random是一个无参函数,返回[0.0, 1.0)之前随机浮点数。random参数默认为内置random()函数。
下面模拟一个洗牌过程:
sample(population, k)
随机从集合population中挑选k个”不同”(unique)元素组成一个序列返回。但如果population中本身存在重复元素,则返回的序列中也可能有重复元素。
Seeding
random.seed([x])
seed()函数用于初始化伪随机数生成器。参数x为任何可哈希(hashable)对象。如果x为缺省值或None,则使用系统时间进行初始化。
保存状态
getstate()
返回当前伪随机数产生器的状态对象。此状态对象可被传入setstate()方法来恢复到当前状态。
setstate(state)
恢复到getstate()被调用时的状态。
getstate()和setstate()函数常被一起使用,来控制多个同步运行伪随机数产生器的运行状态。下面为实例:
第一次执行结果:
第二次执行结果:
多个同步生成器
jumpahead(n)
使伪随机数产生器从当前运行状态发生变化,参数n是一个非负整数,用于搅乱当前的状态变量。不同于getstate()和setstate()函数常常用于将所有产生器实例同步到同一状态,jumpahead()用于使产生器们的状态互相远离。
下面为实例:
系统随机生成器
SystemRadom()
使用操作系统的os.urandom()函数来产生随机数,不是所有操作系统都支持。相应的,seed()和jumpahead()函数不再起作用,而getstate()和setstate()函数则会抛出NotImplementedError异常。
非均匀分布
random.normalvariate(mu, sigma)
random.lognormvariate(mu, sigma)
random.expovariate(lambd)
random. paretovariate(alpha)
random. weibullvariate(alpha, beta)
random.gauss(mu, sigma)
random. vonmisesvariate()
random. gammavariate(alpha, beta)
random. betavariate(alpha, beta)
random.triangular(low, high, mode)
|
|