一尘不染

储层采样

algorithm

要从大小不确定的数组中检索 k个 随机数,我们使用一种称为储层采样的技术。谁能简要介绍一下示例代码是如何发生的?


阅读 230

收藏
2020-07-28

共1个答案

一尘不染

我实际上没有意识到这个名字,所以我从头证明并实现了这个名字:

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

来自:http :
//web.archive.org/web/20141026071430/http :
//propersubset.com : 80/2010/04/choosing-random-
elements.html

接近尾声的证明。

2020-07-28