问题描述

 

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

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

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

 

算法思想

 

蓄水池采样问题

 

 

算法证明

 

蓄水池采样问题

 

所以对于其中每个元素,被保留的概率都为k/n.

 

相关文章: