概率选取的实现
浏览:2612次 出处信息
常常有这样的功能需求: 每次从一批候选项中随机选取其中一项, 要求每一项的出现都有一定的概率. 比如说, 有如下候选项和对应的概率: 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){ // 选中了 } }
建议继续学习:
- 概率语言模型及其变形系列-LDA及Gibbs Sampling (阅读:5851)
- 趣题:公司应该雇用多少员工? (阅读:4019)
- 概率语言模型及其变形系列-PLSA及EM算法 (阅读:3937)
- PHP概率算法(适用于抽奖、随机广告) (阅读:3258)
- 从抛硬币试验看概率论的基本内容及统计方法 (阅读:3026)
- 生日悖论外传:任取两个人生日相同的概率是50% (阅读:2594)
- 生成特定分布随机数的方法 (阅读:2816)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:浅谈MySQL索引背后的数据结构及算法
后一篇:能否在等边三角形点阵中画一个正方形? >>
文章信息
- 作者:ideawu 来源: idea's blog
- 标签: 概率
- 发布时间:2011-08-03 13:29:52
建议继续学习
近3天十大热文
- [70] Twitter/微博客的学习摘要
- [65] find命令的一点注意事项
- [64] 如何拿下简短的域名
- [64] IOS安全–浅谈关于IOS加固的几种方法
- [63] android 开发入门
- [62] 流程管理与用户研究
- [62] Go Reflect 性能
- [60] Oracle MTS模式下 进程地址与会话信
- [59] 图书馆的世界纪录
- [58] 读书笔记-壹百度:百度十年千倍的29条法则