当前位置: 首页 > news >正文

萌新学 Python 之 random 函数

random 模块:主要用来生成随机数

先导入包:import random

randint(a, b),生成 [a, b] 之间的整数,包含边界 a 和 b,a 和 b 为整数

random(),生成的是 [0,1) 之间的浮点数,包含 0 不包含 1

randrange(起始, 结束, 步长),生成 [起始, 结束) 之间的整数,步长默认为 1

uniform(a, b),生成 [a, b] 之间的浮点数

gauss(期望值, 标准差),生成高斯分布(正态分布)的浮点数

seed(整数),随机种子数,不带参数,以当前时间生成初始种子数,当使用的种子数相同时,随机生成的序列数就相同

shuffle(列表),随机将原列表的元素打乱

sample(序列, 指定的长度),随机抽取序列中指定长度的元素,返回列表

choices(序列, weights = 相对权重, cum_weights = 累加权重, k = 抽取次数),

随机从序列中抽取 k 次元素,返回列表,默认随机抽取的每个元素概率相同

import random
print(len(dir(random)), dir(random))

# randint(a, b),生成 [a, b] 之间的整数,包含边界 a 和 b,a 和 b 为整数
print(random.randint(1, 10))

# random(),生成的是 [0,1) 之间的浮点数,包含 0 不包含 1
print(random.random())

# randrange(起始, 结束, 步长),生成 [起始, 结束) 之间的整数,步长默认为 1
print(random.randrange(1, 10))
print(random.randrange(1, 10, 2))
print(random.randrange(10, 1, -2))

# uniform(a, b),生成 [a, b] 之间的浮点数
print(random.uniform(1.1, 2.2))

# gauss(期望值, 标准差),生成高斯分布(正态分布)的浮点数
print(random.gauss(0, 1))
print([random.gauss(0, 1) for _ in range(50)])

# seed(整数),随机种子数,不带参数,以当前时间生成初始种子数,当使用的种子数相同时,随机生成的序列数就相同
random.seed(1)
print(random.random())

# shuffle(列表),随机将原列表的元素打乱
lst = ['a', 'b', 'c', 'd']
print(lst)                                              # ['a', 'b', 'c', 'd']
# 打乱列表元素
random.shuffle(lst)
print(lst)                                              # ['c', 'd', 'b', 'a']

# sample(序列, 指定的长度),随机抽取序列中指定长度的元素,返回列表
lst = ['a', 'b', 'c', 'd']
print(random.sample(lst, 2))                            # ['d', 'b']

# choices(序列, weights = 相对权重, cum_weights = 累加权重, k = 抽取次数),随机从序列中抽取 k 次元素,返回列表,默认随机抽取的每个元素概率相同
# 从列表中随机抽取一个元素,每个元素抽到的概率一样
print(random.choices(['a', 'b', 'c', 'd']))             # ['b']
# 从列表中随机抽取两个元素,概率一样
print(random.choices(['a', 'b', 'c', 'd'], k = 2))      # ['b', 'a']
# 从列表中随机抽取多个元素,概率一样
print(random.choices(['a', 'b', 'c', 'd'], k = 10))     # ['b', 'd', 'b', 'c', 'd', 'c', 'b', 'd', 'c', 'a']
# weights 相对权重,从列表中随机抽取多个元素,设置每个元素的权重 weights = [1, 2, 3, 4],a 的概率是 1/(1+2+3+4),以此类推,抽到 d 的概率更高
print(random.choices(['a', 'b', 'c', 'd'], weights=[1, 2, 3, 4], k = 10))  # ['c', 'a', 'd', 'a', 'd', 'd', 'd', 'd', 'c', 'd']
''' 累加权重与相对权重的计算公式:cum_weights = [sum(weights[:i+1]) for i in range(len(weights))]
    比如 weights = [1, 2, 3, 4],cum_weights = [1, 1+2, 1+2+3, 1+2+3+4] = [1, 3, 6, 10] '''

累加权重与相对权重的计算公式:

cum_weights = [sum(weights[:i+1]) for i in range(len(weights))]

比如 weights = [1, 2, 3, 4],cum_weights = [1, 1+2, 1+2+3, 1+2+3+4] = [1, 3, 6, 10] 

如果 cum_weights = [1,  1,  1,  1],那么 weights = [1, 0, 0, 0]

cum_weights 和 weights 只能使用其中之一

相关文章:

  • 怎么在本地环境安装yarn包
  • git上传仓库操作
  • Oracle 导出所有表索引的创建语句
  • 防火墙旁挂负载分担组网实验
  • 【华为OD机考】华为OD笔试真题解析(15)--异常的打卡记录
  • Zookeeper 的核心引擎:深入解析 ZAB 协议
  • C#-委托
  • Redis7——进阶篇(一)
  • 正浩创新内推:校招、社招EcoFlow社招内推码: FRQU1CY
  • 鸿蒙应用开发入门教程
  • Spring学习——新建module模块
  • 无法创建虚拟机问题
  • Blender调整最佳渲染清晰度
  • wordpress子分类调用父分类名称和链接的3种方法
  • 数字人口播:开启内容创作新时代,实时对话数字人源码环境,可OEM
  • 大模型赋能心脏骤停预测:精准医疗新曙光
  • DeepSeek-V3:AI语言模型的高效训练与推理之路
  • 常见排序算法
  • MySql面试总结(一)
  • 知识管理平台智能服务架构解析
  • 西安专业网站开发公司/查指数
  • seo优化操作/四川seo多少钱
  • 网站跳转到另外一个网站怎么做/好网站制作公司
  • 品牌平价网站建设/列表网推广效果怎么样
  • 西城做网站公司/客服系统网页源码2022免费
  • 怎么制作网站链接转发视频/fifa最新排名出炉