怎么写一个带概率的随机抽取模型?

2014-11-03 10:34:37 +08:00
 zhimingcc
对于[1,2,3,4,5,6,7]这个数组,如果随机抽取,肯定每个数的被抽取的概率都是1/7,
代码大概是 Random.nextInt(7)就搞定了

如果人为增加一个概率,比如1,2概率是0.25,3,4,5,6,7都是0.1的概率,
该怎么写这样一个带概率的抽取模型?
5573 次点击
所在节点    程序员
28 条回复
jokester
2014-11-03 14:47:09 +08:00
@jokester 补充. 那个论文是n中抽m(m<=n)的方法. n中抽1不用那么复杂.
zoowii
2014-11-03 14:47:31 +08:00
生成一个[0, 1)的小数,然后按权重分配这段长为1的线段.然后看这个随机生成的小数在哪个区间即可
bingwenshi
2014-11-03 14:51:20 +08:00
刚好前几天研究过类似的问题, 楼主可以看下我的这篇博客

http://segmentfault.com/blog/shibingwen/1190000000735405
bingwenshi
2014-11-03 14:56:11 +08:00
方法不一定比楼上各位的好, 但是思路会比较清晰点
lygmqkl
2014-11-03 16:08:43 +08:00
@lichao 这个方法好,不局限在目标array,跳出来构建一个概率数组,然后根据概率数组获得的值直接取整对应到目标array
walleL
2014-11-03 20:20:26 +08:00
圆桌算法 代码参考 @feiyuanqiu
游戏里面经常用到
xiaowangge
2014-11-03 22:18:34 +08:00
游戏开发用到的是,填写成配置文件。
yangzh
2015-03-05 01:31:03 +08:00
已知了概率分布的概率累积函数 F(x),也可以从均匀分布 U[0,1] 中随机取 u ,再求 x=F^(-1)(u) ,x 即是想要随机样本。

此为统计学上的标准答案。建议楼主找个周围学过概率学的朋友问问。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/143548

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX