蓄水池采样原理

一、原理
蓄水池采样算法解决的是在给定但长度未知的大数据集中,随机等概率抽取一个数据。如果知道数据集的长度,可以用随机数rand()%n得到一个确切的随机位置,那么该位置的对象就是所求的对象,选中的概率是1/n。那长度未知该如何取?尤其是如果这个大数据集不能一次性放入内存中,蓄水池采样算法就非常有用了。

算法思路:我们总是选择第一个对象,以1/2的概率选择第二个,以1/3的概率选择第三个,以此类推,以1/m的概率选择第m个对象。当该过程结束时,每一个对象具有相同的选中概率,即1/n。

证明:第m个对象最终被选中的概率P=选择m的概率*其后面所有对象不被选择的概率,即
1 m × ( m m + 1 × m + 1 m + 2 × . . . × n − 1 n ) = 1 n \frac{1}{m}\times(\frac{m}{m+1}\times\frac{m+1}{m+2}\times...\times\frac{n-1}{n})=\frac{1}{n} m1

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值