蓄水池采样问题

问题描述

 

要求从N个元素中随机的抽取k个元素,其中N无法确定。例如:

  1. 从 100000 份调查报告中抽取 1000 份进行统计。
  2. 从一本很厚的电话簿中抽取 1000 人进行姓氏统计。
  3. 从 Google 搜索 "Ken Thompson",从中抽取 100 个结果查看哪些是今年的。

这种应用的场景一般是数据流的情况下,由于数据只能被读取一次,而且数据量很大,并不能全部保存,因此数据量N是无法在抽样开始时确定的;但又要保持随机性,于是有了这个问题。

 

算法思想

 

 

 

算法证明

 

 

所以对于其中每个元素,被保留的概率都为k/n.蓄水池算法适用于对一个不清楚规模的数据集进行采样。

 

posted @ 2018-09-06 18:26  FlyingWarrior  阅读(184)  评论(0编辑  收藏  举报