技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 算法 --> 概率选取的实现

概率选取的实现

浏览:2613次  出处信息

    常常有这样的功能需求: 每次从一批候选项中随机选取其中一项, 要求每一项的出现都有一定的概率. 比如说, 有如下候选项和对应的概率: A:10%, B:5%, C:25%, D:60%.

    现在, 把每一项的概率用一个正整数(概率值)来表示, 不使用百分率, 整数的总和不一定等于100, 可以是任意大小,

实际概率 = 概率值/总和 * 100%

    概率选取的算法如下:

  • 依次(顺序可随机)将各项按概率值从原点开始放在一维坐标上首尾相连, 这样, 每一项对应一个取值区间
  • 在总区间范围内随机选取一个点, 落在哪一项对应的区间就选中哪一项
  •     用伪码表示:

    total_p = sum(p1 + p2 + p3 + ...)
    rand = random(1, total_p) // [1, total_p]
    foreach(items as item){
        rand -= item.p
        if(rand <= 0){
            // 选中了
        }
    }
    

    建议继续学习:

    1. 概率语言模型及其变形系列-LDA及Gibbs Sampling    (阅读:5851)
    2. 趣题:公司应该雇用多少员工?    (阅读:4019)
    3. 概率语言模型及其变形系列-PLSA及EM算法    (阅读:3937)
    4. PHP概率算法(适用于抽奖、随机广告)    (阅读:3259)
    5. 从抛硬币试验看概率论的基本内容及统计方法    (阅读:3028)
    6. 生日悖论外传:任取两个人生日相同的概率是50%    (阅读:2595)
    7. 生成特定分布随机数的方法    (阅读:2816)
    QQ技术交流群:445447336,欢迎加入!
    扫一扫订阅我的微信号:IT技术博客大学习
    © 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

    京ICP备15002552号-1