Python random模块常用函数详解

本文思路:

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

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

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

参考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(ab)

返回范围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=1p=0.5)

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

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

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

Beta分布:random.betavariate(alphabeta):

回值的范围介于 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(populationweights=None*cum_weights=Nonek=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(populationk*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)

  • 34
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值