概率选取的实现
浏览:2571次 出处信息
常常有这样的功能需求: 每次从一批候选项中随机选取其中一项, 要求每一项的出现都有一定的概率. 比如说, 有如下候选项和对应的概率: 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 (阅读:5650)
- 趣题:公司应该雇用多少员工? (阅读:3978)
- 概率语言模型及其变形系列-PLSA及EM算法 (阅读:3739)
- PHP概率算法(适用于抽奖、随机广告) (阅读:3117)
- 从抛硬币试验看概率论的基本内容及统计方法 (阅读:2885)
- 生日悖论外传:任取两个人生日相同的概率是50% (阅读:2548)
- 生成特定分布随机数的方法 (阅读:2526)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:浅谈MySQL索引背后的数据结构及算法
后一篇:能否在等边三角形点阵中画一个正方形? >>
文章信息
- 作者:ideawu 来源: idea's blog
- 标签: 概率
- 发布时间:2011-08-03 13:29:52
建议继续学习
近3天十大热文
-
[91] Oracle MTS模式下 进程地址与会话信
-
[90] 【社会化设计】自我(self)部分――欢迎区
-
[87] 图书馆的世界纪录
-
[87] android 开发入门
-
[84] Go Reflect 性能
-
[80] IOS安全–浅谈关于IOS加固的几种方法
-
[64] 豆瓣是啥?
-
[63] 用邻接表实现无向图
-
[58] OKR 工作法简介
-
[55] iTerm2 (Mac Terminal)