水塘抽样算法
从大量数据中随机选择样本的高效算法,适用于数据量巨大且未知的场景
总体大小 (N)
30
样本大小 (k)
3
开始演示
重置
1. 总体数据 (N)
就绪状态:请点击"开始演示"按钮
2. 水塘(样本) (k)
3. 随机选择判定
0
0
i = 1
水塘大小 (k)
3
当前位置 (i)
1
当前随机值 (r)
-
判定结果
-
算法原理
先将前k个元素放入"水塘"(样本集合)中
对于第i个元素(i > k):
生成一个0到i之间的随机整数r
如果r < k(即r在0到k-1范围内),则用第i个元素替换水塘中第r个元素
否则,该元素被忽略
处理完所有元素后,水塘中保留的就是随机选择的k个样本
处理步骤
演示尚未开始...
概率说明
每个元素被选中的概率均为 k/N,保证了抽样的公平性。
准备开始演示...