我正在尝试编写一种算法,该算法将从序列中随机选择N个不同的项,而无需事先知道序列的大小,并且在一个以上的序列上进行多次迭代的开销很大。例如,序列的元素可能是一个巨大文件的行。
当N = 1(即“从一个巨大的序列中随机挑选一个元素”)时,我找到了一种解决方案:
import random
items = range(1, 10) # Imagine this is a huge sequence of unknown length
count = 1
selected = None
for item in items:
if random.random() * count < 1:
selected = item
count += 1
但是,对于其他N值(例如N = 3),我该如何实现相同的目标呢?
月关宝盒
慕无忌1623718
茅侃侃