如何在Matlab中随机生成一个n 0和m 1的矩阵?

时间:2015-05-20 13:00:10

标签: matlab random

例如,如何随机生成包含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]

3 个答案:

答案 0 :(得分:6)

创建一个向量,该向量以所需的0个数量开头,后跟所需的n = 8; m = 4; M = [ones(m,1), zeros(n,1)]; M = M(randperm(numel(M))) 个数量,然后使用randperm对其进行随机播放:

Run

或者你可以略有不同:http://www.mathworks.com/matlabcentral/answers/83289-how-can-i-create-a-random-binary-matrix-with-a-specified-number-of-1-s-and-0-s

答案 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具有比此示例更多的功能。