码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Python3】random.choices 权重随机选取 详解


    random.choices是Python 3中random模块中的一个函数,用于从指定的序列中以指定的权重随机选择元素。下面我将对该函数进行详细介绍,并提供一些示例代码和注意事项。

    函数签名:

    random.choices(population, weights=None, *, cum_weights=None, k=1)
    

    参数说明:

    • population:指定要从中进行随机选择的序列,可以是列表、元组、字符串或其他可迭代对象。
    • weights(可选):指定每个元素的权重列表,列表中的每个值必须是非负数。如果未提供此参数,则每个元素的权重被假定为相等,即等概率选择。
    • cum_weights(可选):类似于weights,但是是累积权重列表,即每个元素的权重是从序列开头到该元素位置的累积和。如果提供了cum_weights,则weights参数会被忽略。
    • k:指定要选择的元素数量,即随机选择的样本数。默认值为1,即选择一个元素。

    返回值:

    • 返回一个列表,包含随机选择的元素。

    注意事项:

    • 如果population为空,则会引发IndexError异常。
    • 如果weights和cum_weights同时提供,则会引发ValueError异常。
    • 如果weights或cum_weights中包含负数,则会引发ValueError异常。
    • 如果提供了cum_weights,则其长度必须与population的长度相同。

    示例代码:

    import random
    
    # 例子1:等概率选择
    population = ['A', 'B', 'C', 'D', 'E']
    choices = random.choices(population, k=3)
    print("例子1结果:", choices)
    
    # 例子2:使用权重进行选择
    weights = [1, 2, 3, 4, 5]  
    choices_weighted = random.choices(population, weights=weights, k=3)
    print("例子2结果:", choices_weighted)
    
    # 例子3:使用累积权重进行选择
    cum_weights = [1, 3, 6, 10, 15]  # 累积权重,相当于[1, 1+2, 1+2+3, 1+2+3+4, 1+2+3+4+5]
    choices_cum_weighted = random.choices(population, cum_weights=cum_weights, k=3)
    print("例子3结果:", choices_cum_weighted)
    

    结果解释:

    • 例子1中,由于未提供权重,因此每个元素被选择的概率相等。
    • 例子2中,元素E的权重最高,因此被选中的概率最大。
    • 例子3中,通过累积权重,元素D的累积权重最高,因此被选中的概率最大。
  • 相关阅读:
    猿创征文|我的C/C++技术成长之路
    Spring MVC 框架学习(八)---- SSM 框架整合
    Pridwen: Universally Hardening SGX Programs via Load-Time Synthesis【ATC`22】
    科研-聚苯乙烯-b-聚丙烯酸胶束血红蛋白组装/牛血清白蛋白聚苯乙烯纳米微球PS/BSA
    HTML期末作业:基于html+css+javascript+jquery实现古诗词网页 学生网页设计作品 web前端开发技术 web课程设计 网页规划与设计
    数据库实验3答案
    一名双非程序媛面试蚂蚁、美团、携程等大厂拿 offer 分享面试过程
    rabbitmq多个消费者消费同一个队列中的同一条消息。
    CNN系列
    Harmony2.0开发—事件
  • 原文地址:https://blog.csdn.net/qq_44810930/article/details/139437577
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号