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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创建一个随机整数矩阵,每个整数的出现次数相等相关的知识,希望对你有一定的参考价值。

我正在使用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

以上是关于创建一个随机整数矩阵,每个整数的出现次数相等的主要内容,如果未能解决你的问题,请参考以下文章

C语言 在文件中存放的均为40至60之间的正整数,要求统计每个正整数出现的次数,按次数升序排序并输出?

从数组中选择不相等的随机整数(python)

用随机数计算数组中出现的次数,没有方法或 C# 中的列表

python 生成包含100个两位数随机整数的元组

ccf数字排序

31 整数中1出现的次数(从1到n整数中1出现的次数)