Для получения k случайных чисел от массива неопределенного размера, мы используем технику, названную выборкой водохранилища. Кто-либо может кратко выделиться, как это происходит с примером кода?
На самом деле я не знал, что у этого есть название, поэтому я доказал и реализовал это с нуля:
import random
def random_subset( iterator, K ):
result = []
N = 0
for item in iterator:
N += 1
if len( result ) < K:
result.append( item )
else:
s = int(random.random() * N)
if s < K:
result[ s ] = item
return result
с доказательством ближе к концу.