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

random matrix with special order in matlab

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

有没有什么办法可以让这个元素中的 1 的个数为 7000。

可以指导一下吗?

如果我没有正确理解你的问题,我认为 randi 函数不是从这里开始的方式。

我建议采用以下程序:

  1. 从一个包含 500*500 个元素的列表开始,其中 7000 个元素设置为 1,其余元素设置为 0
  2. 随机化列表中元素的顺序
  3. 制作一个500*500的数组,其元素是列表的元素

例如,以下代码可以工作:

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))