Python random模块常用函数详解

Python random模块常用函数详解本文详细介绍了 Python 中的 random 模块 涵盖随机数生成 种子初始化 不同类型数据的随机生成方法 以及特定分布如正态 二项式 对称和概率分布的函数

大家好,欢迎来到IT知识分享网。

本文思路:

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

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

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

参考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(), k=60)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130534.html

(0)
上一篇 2025-08-14 19:15
下一篇 2025-08-14 19:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信