python random.sample在所有可能的结果后停止采样

时间:2011-08-10 09:22:36

标签: python random dictionary

我使用random.sample来采样所有可能的数据集组合(约150集)。我将测试的样本量为3,4和5,数据集范围为2到20个项目。

每个数据点都是一个字符串,例如'101A'。我只是将随机采样循环1000次并将这些点存储为有序的连接字符串以取消重复。 e.g。

d['2-101a-124'] = 0 

然后提取数据然后用'-'s分割数据。有没有更好的方法呢?限制随机抽样以获得所有组合的次数?

编辑:为了澄清,我需要列表的所有可能组合,即

dataset = ['1','2','3A','4']

当采样3个数据点时,我需要所有组合,如:

combination 1 = ['1','2','3A']
combination 2 = ['2','3A','4']
combination 3 = ['1','3A','4']
combination 4 = ['1','2','4']

2 个答案:

答案 0 :(得分:5)

没有使用标准库?

>>> import itertools
>>> dataset = ['1','2','3A','4']
>>> list(itertools.combinations(dataset, 3))
[('1', '2', '3A'), ('1', '2', '4'), ('1', '3A', '4'), ('2', '3A', '4')]

答案 1 :(得分:0)

如果您可以枚举所有组合并将它们放在列表中

a = [ list of all combinations ]

然后您可以shuffle将它们按随机顺序放置

random.shuffle(a)

这样你就可以从原版中获得1个。我不是100%肯定我会遵循目标,所以也许这不是你想要的。