创建一个随机整数矩阵,每个整数的出现次数相等

问题描述 投票:1回答:2

我正在使用matlab创建一个随机整数1到5的矩阵,每个整数的次数相等,这样矩阵中的数量就像5s一样等于4。同等地加权值不起作用,因为它仍会产生每个数字的不相等的出现次数。有人可以帮忙吗?

matlab random integer
2个回答
4
投票
numbers = repmat([1:5], 1, 5);
reshape(numbers(randperm(length(numbers))), [5,5])

这将创建1到5的向量并重复5次,因此对于5x5矩阵来说足够了。可以将5更改为您需要的任何大小矩阵。然后随机挑选它们以使矢量随机。最后,它被重新塑造为5x5矩阵。


0
投票

这是一个生成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
© www.soinside.com 2019 - 2024. All rights reserved.