2011-08-10 59 views
1

我正在使用random.sample對所有可能的數據集合(約150組)進行採樣。我將要測試的樣本大小是3,4和5,數據集的範圍是2到20個項目。python random.sample在所有可能的結果後停止採樣

每個數據點將是一個字符串,例如'101A'。我打算循環1000次隨機採樣,並將點存儲爲有序的連接字符串以取消重複。 例如

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

然後提取數據,然後按' - '分割數據。有沒有更好的方法來做到這一點?限制它隨機抽樣獲得所有組合的次數?

編輯:只是爲了澄清採樣3個數據點,當我需要一個列表的所有可能的組合即

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

我需要的所有組合,如:

combination 1 = ['1','2','3A'] 
combination 2 = ['2','3A','4'] 
combination 3 = ['1','3A','4'] 
combination 4 = ['1','2','4'] 
+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')] 
+0

謝謝,是的,我正在從錯誤的角度尋找答案。 – Anake

0

如果你能枚舉所有組合並將它們放在一個列表中

a = [ list of all combinations ] 

然後你可以shuffle它把它們放在一個隨機順序

random.shuffle(a) 

這樣你就會有正確的每一個從原來的。我不是100%確定我追蹤的目標,所以也許這不是你想要的。

相關問題