[请益] 关于排列组合不重复

楼主: 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