matlab中具有特殊顺序的随机矩阵
random matrix with special order in matlab
这是我的简单代码:A=randi([0,1],[500,500])
这段代码给我矩阵 A(500*500),所有元素都是 0 或 1。
有没有什么办法可以让这个元素中的 1 的个数为 7000。
可以指导一下吗?
如果我没有正确理解你的问题,我认为 randi 函数不是从这里开始的方式。
我建议采用以下程序:
- 从一个包含 500*500 个元素的列表开始,其中 7000 个元素设置为
1
,其余元素设置为 0
- 随机化列表中元素的顺序
- 制作一个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))
这是我的简单代码:A=randi([0,1],[500,500]) 这段代码给我矩阵 A(500*500),所有元素都是 0 或 1。
有没有什么办法可以让这个元素中的 1 的个数为 7000。
可以指导一下吗?
如果我没有正确理解你的问题,我认为 randi 函数不是从这里开始的方式。
我建议采用以下程序:
- 从一个包含 500*500 个元素的列表开始,其中 7000 个元素设置为
1
,其余元素设置为0
- 随机化列表中元素的顺序
- 制作一个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))