17 lines
417 B
Python
17 lines
417 B
Python
|
|
class S_of_n_creator():
|
||
|
|
def __init__(self, n):
|
||
|
|
self.n = n
|
||
|
|
self.i = 0
|
||
|
|
self.sample = []
|
||
|
|
|
||
|
|
def __call__(self, item):
|
||
|
|
self.i += 1
|
||
|
|
n, i, sample = self.n, self.i, self.sample
|
||
|
|
if i <= n:
|
||
|
|
# Keep first n items
|
||
|
|
sample.append(item)
|
||
|
|
elif randrange(i) < n:
|
||
|
|
# Keep item
|
||
|
|
sample[randrange(n)] = item
|
||
|
|
return sample
|