最近做数据库作业,需要对几个 G 的数据进行抽样,比如抽 100 万行,需要边扫边抽样,不能存储所有的行之后再抽样。
那如何进行抽样才能让每行抽到的概率相等呢?
做法很简单,假设一共需要抽样 行,当前扫描到了第
行(
从 1 开始),那么
1、若 ,则直接加入到抽样数组中
2、否则以 的概率,随机替换掉抽样数组中的某个元素
为什么这是正确的呢?
我们直接来分析每个元素被抽到的概率(不妨假设总行数 大于等于
)
第 行最终抽到的概率为
第 行最终抽到的概率为
版权属于: Alan Clarke's Blog
原文地址: https://blog.xalanq.com/dynamic-sampling-method/
转载时必须以链接形式注明原始出处及本声明。
1 条评论