我正在使用matlab创建一个随机整数1到5的矩阵,每个整数的次数相等,这样矩阵中的数量就像5s一样等于4。同等地加权值不起作用,因为它仍会产生每个数字的不相等的出现次数。有人可以帮忙吗?
numbers = repmat([1:5], 1, 5);
reshape(numbers(randperm(length(numbers))), [5,5])
这将创建1到5的向量并重复5次,因此对于5x5矩阵来说足够了。可以将5更改为您需要的任何大小矩阵。然后随机挑选它们以使矢量随机。最后,它被重新塑造为5x5矩阵。
这是一个生成R行和C列矩阵的代码。这不是最有效的代码,但它很容易理解,并且即使相等也不完美(即如果R * C不是5的倍数),也有工作的好处:
R = 5;
C = 10;
M = -1 * ones(R, C);
affected = 0;
while affected < R*C
r = randi([1,R]);
c = randi([1,C]);
if M(r, c) == -1
M(r, c) = 1 + mod(affected, 5);
affected = affected + 1;
end
end