Python random模块常用函数详解

2025-06-13 04:45:27 拉莫斯世界杯

本文思路:

常用函数原型、返回值、用法示例

生成随机数讲解部分按照返回类型、是否传入列表、是否产生特定分布分类

如果发现本文有错误,希望您指正。如果有想要添加的方面,也尽情留言

参考python中文文档:random --- 生成伪随机数 — Python 3.12.2 文档

1. 生成随机数种子:seed()初始化随机生成器

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

a:种子值。

如果 a 被省略或为 None ,则使用当前系统时间。 如果操作系统提供随机源,则使用它们。如果 a 是 int 类型,则直接使用。version(很少用到): 1或2。指定a不为整数时,如何将a转化为int

version=2:将a(str,bytes或bytarray)转换为int并使用它的所有位version=1:用算法生成更窄的种子范围

2. 生成随机数

2.1 生成字节数据随机数:

random.randbytes(n): 生成n个随机字节

2.1 整数数据:

random.randrange([start], stop[, step])

返回从 range(start, stop, step) 随机选择的一个元素。大致等价于 choice(range(start, stop, step))

start:起始值,如果省略则默认为0。stop:终止值,生成的随机整数不包括该值。step:步长,如果省略则默认为1

random.randint(start,end)

返回随机整数 N 满足 a <= N <= b。相当于 randrange(a, b+1)

注意和randrange不同,这里端点值是可以取到的

start:起始值stop:终止值

2.2 浮点数:

random.random()

返回 0.0 <= X < 1.0 范围内的一个随机浮点数。

random.uniform(a, b)

返回范围a,b内随机的一个浮点数。终点值 b 可能包括或不包括在该范围内,具体取决于表达式 a+(b-a)*andom() 的浮点舍入结果

a,b: 浮点数,不规定a<=b

2.2.2 生成特定分布的随机数:

正态分布:random.normal(loc=0.0, scale=1.0, size=None)

loc:指定均值(期望值)。scale:指定标准差。size:指定生成的随机数数量,可以是一个数,也可以是一个元组。

二项式分布B(n,p):random.binomialvariate(n=1, p=0.5)

返回一个整数,表示 n 次独立试验在每次试验的成功率为 p 时的成功次数

对称分布:random.triangular(low=0, high=1, mode):

返回一个[low,high]之间一个随机浮点数(包括端点) low 和 high 边界默认为零和一。 mode 参数默认为边界之间的中点,给出对称分布。

Beta分布:random.betavariate(alpha, beta):

回值的范围介于 0 和 1 之间

alpha,beta:均在[0,1]之间

指数分布random.expovariate(lambd=1.0)

lambd 是 1.0 除以所需的平均值,它应该是非零的。如果 lambd 为正,则返回值的范围为 0 到正无穷大;如果 lambd 为负,则返回值从负无穷大到 0。

2.3 对序列进行选择或操作:

random.choice(seq)

返回从非空序列 seq 返回一个随机元素

seq:序列,可以是list, tuple,string,dict等任意序列。若seq为空则会印发IndexError

random.choices(population, weights=None, *, cum_weights=None, k=1)

从 population 中有重复地随机选取元素,返回大小为 k 的元素列表。

population: 同choice()中的seq。如果 population 为空,则引发IndexErrorweights:非负序列,表示选择的相对权重。cum_weights: 非负序列,表示选择的绝对权重,等于相对权重的累加。

如果既未指定 weight 也未指定 cum_weights ,则以相等的概率进行选择。 如果提供了权重序列,则它必须与 population 序列的长度相同。 若权重全为0,会引发VelueError

random.shuffle(x)

将x随机打乱位置,同时赋值给x

x: 同以上seq

random.sample(population, k, *, counts=None)

返回从总体序列中选取的元素的(每个元素只选一次)、长度为 k 的列表。 用于无重复的随机抽样。保持原始总体不变

population:同seqk: int,返回列表的长度。如果k大于population长度,则引发ValueErroeconts:列表,表示重复列出某个元素。

例如,sample(['red', 'blue'], counts=[4, 2], k=5) 等价于 sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)

用法示例:

sample(range(10000000), k=60)