作者Feltonee (ee)
看板MATLAB
标题[请益] 关於排列组合不重覆
时间Tue Apr 28 14:47:16 2015
我想要写一个1x16的矩阵
全由正1负1组成
ex:[1,-1,1,........];
目前我用随机方法产生
但是现在想要指定正1的数目
ex:我先要7个1,9个-1
之後会套用到1x32,1x64
并且不希望重覆
当然如果有重覆的方法也可以
想请问各位前辈高手是否有解
谢谢
--
Sent from my Android
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.124.42.233
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1430203638.A.B71.html
1F:→ celestialgod: de2bi(1:(2^k-1))*2-1 其中k是+1跟-1的个数总和 04/28 14:55
2F:→ celestialgod: 我错了,不要理我QQ... 04/28 14:56
3F:→ celestialgod: nchoosek(1:16, 7)把全1的矩阵换掉对应位置变成-1 04/28 15:02
4F:推 celestialgod: m = nchoosek(1:16, 7);res = ones(size(m, 1), 16) 04/28 15:07
5F:→ celestialgod: for i = 1:size(m, 1), res(i, m(i,:)) = -1; end 04/28 15:07
6F:→ celestialgod: 应该有更好的方法QQ 04/28 15:07
7F:→ celestialgod: perms([ones(1,7), -ones(1, 9)])不过他不给我跑XD 04/28 15:12
8F:→ Feltonee: 谢谢C大 那请问如果我想要随机取 毕竟这样会一次RUN 04/28 15:13
9F:→ Feltonee: 全部,资料量过大 04/28 15:13
10F:→ celestialgod: 对不起,我没看到随机取... 04/28 15:15
11F:→ celestialgod: 那就直接 randsample(1:16, 7) 04/28 15:16
12F:→ Feltonee: 还是很感谢你^_^,你已经帮我很大的忙了XDD 04/28 15:17
13F:→ celestialgod: randsample 可以用randperm(1:16)取前7个 04/28 15:17
14F:→ celestialgod: randsample比较旧的版本没有 04/28 15:18
15F:→ celestialgod: 随机取没有重复,感觉不太可能= = 04/28 15:19
16F:→ celestialgod: 除非记录你已经取出来的,再做比对 04/28 15:19
17F:→ celestialgod: 但是到最後记忆体还是会爆掉 04/28 15:19
18F:→ celestialgod: 可以考虑用MEX...取道一定数目停止再从断点取 04/28 15:22
19F:→ celestialgod: 利用c++的next_combination 04/28 15:22
20F:→ celestialgod: 我之前就这样分开去算...我要的GLOBAL MAX... 04/28 15:23
21F:→ Feltonee: OK 谢谢你 这两个方法我都会试一试 ^__^ 04/28 15:32