python实现蓄水池抽样算法
蓄水池抽样算法(Reservoir Sampling)是一种在不知道数据总量(n)的情况下,从一个数据流中均匀随机地抽取k个样本的算法。这个算法特别适用于处理大型数据集或无限数据流,因为它只需要存储k个样本,无论数据流有多大。
下面是一个Python实现的完整代码,包含详细的注释和示例用法。
import random
def reservoir_sampling(stream, k):
"""
从数据流stream中随机抽取k个样本,确保每个样本被选中的概率相同。
参数:
stream (iterable): 数据流,可以是任何可迭代对象。
k (int): 要抽取的样本数量。
返回:
list: 抽取的k个样本。
"""
reservoir = [