问题: 当内存无法加载全部数据时,如何从包含未知大小的数据流中随机选取其中k个不同的数据, 并且要保证每个数据被抽取到的概率相等。 做法: 不断读取数据流中的数据,设计数从0开始: 1.若当前已读取的数据量<k,那么直接丢入答案集。 2.若当前已读取的数据量>=k: 设当前为第i个数据,那么在[0,i]内随机选取一个数字d, 若d在[0,k-1]范围内,那么用第i个数据替换答案集中的第d个数据。 当数据流读取完毕,答案集就是问题要随机选取出的数据了。 正确性证明: 下次补