当n未知时,您宁愿需要一种用于所谓的储层采样的在线算法.
这里提供了很好的解释和证明草图http://propersubset.com/2010/04/choosing-random-elements.html
我的意思是这个算法用Python实现(取自上面的链接)
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
Run Code Online (Sandbox Code Playgroud)