在matlab中具有特殊顺序的随机矩阵

时间:2015-01-15 15:40:13

标签: random-sample

这是我的简单代码:A = randi([0,1],[500,500]) 这段代码给出了矩阵A(500 * 500),所有元素都是0或1。

是否可以命令此元素中的1的数量为7000。

请指导我吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我认为randi功能不是从这里开始的。

我建议采用以下程序:

  1. 从包含500 * 500个元素的列表开始,其中7000个元素设置为1,其余元素设置为0
  2. 随机化列表中元素的顺序
  3. 制作500 * 500数组,其元素是列表的元素
  4. 例如,以下代码可以使用:

    A_init(1:7000) = 1; A_init(7001:500*500) = 0  % step 1
    A = A_init(randperm(length(A_init)))          % step 2
    A = reshape(A,[500,500])                      % step 3
    

    关键是使用randperm,它会生成索引的随机排列。

    验证A具有正确数量的元素:

    num_ones = length(find(A==1))