Python:如何获取随机子集

Enr*_*rba 4 python set subset python-3.x

我如何s在python中获得一组的随机子集?我试过了

from random import sample, randint

def random_subset(s):
    length = randint(0, len(s))
    return set(sample(s, length))
Run Code Online (Sandbox Code Playgroud)

但我现在认识到,这显然是行不通的,因为分布len(s)在那里s是一个随机子集是不统一的0n.

我敢肯定我可以计算这个分布并使用numpy的样本概率,或类似的东西,但我最喜欢的东西最好用纯python.

Enr*_*rba 6

我刚刚意识到我可以简单地浏览每个元素s并独立决定是否保留它.像这样的东西

from random import randint

def random_subset(s):
    out = set()
    for el in s:                                                                                                                    
        # random coin flip
        if randint(0, 1) == 0:
            out.add(el)
    return out
Run Code Online (Sandbox Code Playgroud)

这具有正确的分布.