[請益] 關於排列組合不重覆

作者: Feltonee   2015-04-28 14:47:16
我想要寫一個1x16的矩陣
全由正1負1組成
ex:[1,-1,1,........];
目前我用隨機方法產生
但是現在想要指定正1的數目
ex:我先要7個1,9個-1
之後會套用到1x32,1x64
並且不希望重覆
當然如果有重覆的方法也可以
想請問各位前輩高手是否有解
謝謝
作者: celestialgod (天)   2015-04-28 14:55:00
de2bi(1:(2^k-1))*2-1 其中k是+1跟-1的個數總和我錯了,不要理我QQ...nchoosek(1:16, 7)把全1的矩陣換掉對應位置變成-1m = nchoosek(1:16, 7);res = ones(size(m, 1), 16)for i = 1:size(m, 1), res(i, m(i,:)) = -1; end應該有更好的方法QQperms([ones(1,7), -ones(1, 9)])不過他不給我跑XD
作者: Feltonee   2015-04-28 15:13:00
謝謝C大 那請問如果我想要隨機取 畢竟這樣會一次RUN全部,資料量過大
作者: celestialgod (天)   2015-04-28 15:15:00
對不起,我沒看到隨機取...那就直接 randsample(1:16, 7)
作者: Feltonee   2015-04-28 15:17:00
還是很感謝你^_^,你已經幫我很大的忙了XDD
作者: celestialgod (天)   2015-04-28 15:17:00
randsample 可以用randperm(1:16)取前7個randsample比較舊的版本沒有隨機取沒有重複,感覺不太可能= =除非記錄你已經取出來的,再做比對但是到最後記憶體還是會爆掉可以考慮用MEX...取道一定數目停止再從斷點取利用c++的next_combination我之前就這樣分開去算...我要的GLOBAL MAX...
作者: Feltonee   2015-04-28 15:32:00
OK 謝謝你 這兩個方法我都會試一試 ^__^

Links booklink

Contact Us: admin [ a t ] ucptt.com