现在的位置: 首页 > 综合 > 正文

蓄水池抽样问题

2013年10月13日 ⁄ 综合 ⁄ 共 334字 ⁄ 字号 评论关闭

      蓄水池抽样问题描述的是,在一个无穷尽的样本中,要求随即抽取一些样本,这些样本被抽取到的概率必须保持一致。

      一个蓄水池就可以理解为无穷大的样本空间。

      解决方案就是蓄水库抽样(reservoid sampling)。主要思想就是保持一个集合,作为蓄水池,依次遍历所有数据的时候以一定概率替换这个蓄水池中的数字。

      其伪代码如下:

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个元素都放到数组中,然后对之后的第i个元素,以k/i的概率替换掉这个水库中的某一个元素。

抱歉!评论已关闭.