Следуя более подробному описанию Кнута (1981), отбор проб коллектора (алгоритм R) может быть реализован следующим образом:
import random
def sample(iterable, n):
"""
Returns @param n random items from @param iterable.
"""
reservoir = []
for t, item in enumerate(iterable):
if t < n:
reservoir.append(item)
else:
m = random.randint(0,t)
if m < n:
reservoir[m] = item
return reservoir