当前位置: 首页 > 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 只能使用其中之一

http://www.lryc.cn/news/544362.html

相关文章:

  • 2-2linux系统IO
  • 周边游平台设计与实现(代码+数据库+LW)
  • 视频批量分段工具
  • Android -- 使用Sharepreference保存List储存失败,原因是包含Bitmap,drawable等类型数据
  • java项目之基于ssm的图书馆书库管理系统(源码+文档)
  • 编写一个程序,输入一个数字并输出其阶乘(Python版)
  • dify基础之prompts
  • 实践教程:使用DeepSeek实现PDF转Word的高效方案
  • 网络安全审计员
  • 算法-二叉树篇13-路径总和
  • 如何设计一个短链系统?
  • 医疗行业电脑终端如何防病毒——火绒企业版杀毒软件
  • 云平台DeepSeek满血版:引领AI推理革新,开启智慧新时代
  • Java进阶——数据类型深入解析
  • R语言+AI提示词:贝叶斯广义线性混合效应模型GLMM生物学Meta分析
  • 深度解析 ANSI X9.31 TR-31:金融行业密钥管理核心标准20250228
  • 视频字幕识别和翻译
  • Spring Boot 流式响应豆包大模型对话能力
  • 算法之领域算法
  • 【愚公系列】《Python网络爬虫从入门到精通》033-DataFrame的数据排序
  • 软件安全性测试类型分享,第三方软件测试机构如何进行安全性测试?
  • eMMC安全简介
  • 在VSCode 中使用通义灵码最新版详细教程
  • Ubuntu20.04安装Isaac sim/ Isaac lab
  • Redis 持久化方式:RDB(Redis Database)和 AOF(Append Only File)
  • spring boot 连接FTP实现文件上传
  • 怎么进行mysql的优化?
  • Octave3D 关卡设计插件
  • 【论文笔记-TPAMI 2024】FreqFusion:用于密集图像预测的频率感知特征融合
  • DeepBI成单关键词管理策略:提升转化与曝光,助力电商业绩双增长