C语言蓄水池抽样——从无限数据流中随机选取k个元素
在实际的数据处理中,我们经常需要从大量的数据中选择部分样本进行分析。如果数据总量已知,我们可以直接使用随机数生成器来进行采样,但是如果数据总量未知,或者无法全部读入内存,该如何进行采样呢?
这时候,蓄水池抽样(Reservoir Sampling)算法就派上用场了。该算法可以从无限数据流中随机选取k个元素,并保证每个元素被选取的概率相等。
下面,我们来看看C语言中如何实现蓄水池抽样算法。
代码实现:
#include <stdio.h>
#include <stdlib.h>