reservoid sample 蓄水池问题

题目:如何从无穷尽流中等概率的抽样出一个单词?

或许我们换一种说法会更加容易理解.等概率的抽取出一个单词,也即随机的抽取一个单词。本体的难点在于没有给定单词数,而是一个无尽的流。

这个问题可以用蓄水池抽样的方法来思考。先简单的介绍一下蓄水池抽样(reservoid sample)算法,我们可以结合算法理解其原理。

 Init : a reservoir with the size: k
        for    i= k+1 to N
            M=random(1, i);
            if( M < k)
                 SWAP the Mth value and ith value
       end for

该算法设定蓄水池的大小为k,也就是等概率的取出k个单词。

即先把前k个数放入蓄水池,对第k+1,我们以k/(k+1)概率决定是否要把它换入蓄水池,换入时随机的选取一个作为替换项,这样一直做下去,对于任意的样本空间n,对每个数的选取概率都为k/n。也就是说对每个数选取概率相等。

证明如下:

  

蓄水池问题是一类问题,可以解决无穷尽流进行等概率抽取的问题。在工作中会有比较重要的应用。


参考:http://www.cnblogs.com/HappyAngel/archive/2011/02/07/1949762.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值