例如,如何随机生成包含8 0
和4 1
s的1 x 12矩阵?
喜欢这个矩阵[1 0 0 1 0 0 0 1 0 0 1 0]
如果我再次生成,它会返回不同的矩阵[0 0 1 0 0 1 1 0 1 0 0 0]
答案 0 :(得分:6)
创建一个向量,该向量以所需的0
个数量开头,后跟所需的n = 8;
m = 4;
M = [ones(m,1), zeros(n,1)];
M = M(randperm(numel(M)))
个数量,然后使用randperm
对其进行随机播放:
Run
答案 1 :(得分:4)
你可以创建一个包含12个零的向量,并使用object literal computed property keys选择你创建的四个数字:
a = zeros(1,12);
a(randsample(12,4)) = 1;
注意:这需要' randsample
'。
如果您没有,则无法使用randsample
。
答案 2 :(得分:1)
这个也可以。
x = zeros(12,1);
tmp = rand(12,1);
[~,ind] = sort(tmp);
x(ind(1:4)) = 1;
不确定是否比其他示例更好,但它是一种方式。我会说这是一个与fhdrsdg类似的解决方案,但是这个解决方案不需要统计工具箱。也有可能这个解决方案可能没有matlabs解决方案可能具有的优雅,randsample
具有比此示例更多的功能。