蓄水池算法在实际应用中比较常见,比如在一次抽奖活动中,在不知道总人数的情况下,每进来一个人都打上编号(1~n,共n个人),我们需要等概率抽取k个获奖人员,如何保证等概率?
在已知长度的数组中随机等概率抽取k个数据很容易,但如果长度未知呢?事先计算一次长度?如果内存不够呢?数据量非常大呢?蓄水池采样(Reservoir Sampling)算法就是来解决这类问题的, 它在分析一些大数据集的时候会非常有效。
问题已经清楚了,那接下来我们该如何切入这类问题呢?
蓄水池算法在实际应用中比较常见,比如在一次抽奖活动中,在不知道总人数的情况下,每进来一个人都打上编号(1~n,共n个人),我们需要等概率抽取k个获奖人员,如何保证等概率?
在已知长度的数组中随机等概率抽取k个数据很容易,但如果长度未知呢?事先计算一次长度?如果内存不够呢?数据量非常大呢?蓄水池采样(Reservoir Sampling)算法就是来解决这类问题的, 它在分析一些大数据集的时候会非常有效。
问题已经清楚了,那接下来我们该如何切入这类问题呢?