本文思路:
常用函数原型、返回值、用法示例
生成随机数讲解部分按照返回类型、是否传入列表、是否产生特定分布分类
如果发现本文有错误,希望您指正。如果有想要添加的方面,也尽情留言
参考python中文文档:random --- 生成伪随机数 — Python 3.12.2 文档
1. 生成随机数种子:seed()初始化随机生成器
random.seed(a=None,version=2)
- a:种子值。
- 如果 a 被省略或为
None
,则使用当前系统时间。 如果操作系统提供随机源,则使用它们。如果 a 是 int 类型,则直接使用。
- 如果 a 被省略或为
- 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 为空,则引发IndexError
- weights:非负序列,表示选择的相对权重。
- cum_weights: 非负序列,表示选择的绝对权重,等于相对权重的累加。
- 如果既未指定 weight 也未指定 cum_weights ,则以相等的概率进行选择。 如果提供了权重序列,则它必须与 population 序列的长度相同。 若权重全为0,会引发VelueError
random.shuffle(x)
将x随机打乱位置,同时赋值给x
- x: 同以上seq
random.sample(population, k, *, counts=None)
返回从总体序列中选取的元素的(每个元素只选一次)、长度为 k 的列表。 用于无重复的随机抽样。保持原始总体不变
- population:同seq
- k: int,返回列表的长度。如果k大于population长度,则引发ValueErroe
- conts:列表,表示重复列出某个元素。
- 例如,
sample(['red', 'blue'], counts=[4, 2], k=5)
等价于sample(['red', 'red', 'red', 'red', 'blue', 'blue'], k=5)
- 例如,
用法示例:
sample(range(10000000), k=60)