简介
random模块提供各种随机数生成方法。Python使用Mersenne Twister作为核心的随机数生成器。
Bookkeeping函数
random.seed(a=None, version=2)
#初始化随机数生成器
#如果参数a没有设置,或者为None,则使用当前系统时间作为随机数生成器的参数
#参数a可以为整数int,也可以为str、bytes、bytearray等
random.getstate()
#获取当前随机数生成器里面状态的对象
random.setstate(state)
#参数state应该是random.getstate()方法获取的状态对象
#方法恢复随机数生成器状态对象
#恢复随机数生成器状态对象后,随机数生成器可生成相同的随机数
random.getrandbits(k)
#方法返回具有最大k位的随机整数,如k=4,则随机数最大为15(b1111)
#该方法使用 Mersenne Twister 生成器
整数方法
random.randrange(stop)
random.randrange(start, stop[, step])
#方法从整数值范围 range(start, stop, step) 获取一个随机数
random.randint(a, b)
#方法返回一个随机整数N,该整数满足 a <= N <= b
序列方法
random.choice(seq)
#方法从非空序列seq中返回一个随机元素
#如果序列seq为空,引起IndexError异常
random.choices(population, weights=None, *, cum_weights=None, k=1)
#方法从序列population中随机挑选k个元素组成列表并返回
#序列weights与cum_weights为权重序列,序列长度与population需相同
#population中元素被随机选中的概率与权重序列相关
#weights为相对权重,cum_weights为累积权重
#比如相对权重[10, 5, 30, 5]与累积权重[10, 15, 45, 50]相同
#底层实现时,相对权重会转换为累积权重,因此调用方法时设置累积权重,效率更高
random.shuffle(x[, random])
#方法将序列x随机打乱元素的位置
#可选参数random是一个无参数的函数,返回[0.0, 1.0)范围内的随机浮点数
#默认参数random是函数random()
#注意对于长度较大的序列,该方法可能非常低效
random.sample(population, k)
#返回从总体序列或集合中选择的唯一元素的 k 长度列表。 用于无重复的随机抽样。
#该方法返回一个新创建的列表,而不改变原始的列表
#如果k值大于population长度,则引起ValueError异常
实值分布
random.random()
#返回[0.0, 1.0)范围内的随机浮点数
random.uniform(a, b)
#返回一个随机的浮点数N,如果a <= b,则a <= N <= b
#如果b <= a,则b <= N <= a
#方法使用random.random(),公式为 min + (max - min) * random.random()