生成包含所有可能数字的矩阵

时间:2017-03-19 06:43:09

标签: matlab matrix random combinations

我正在尝试实现多个矩阵,这些矩阵将涵盖整套数字。例如,我想生成5个长度为10的矩阵,涵盖1-20的所有数字。

因此矩阵一包含一半的数字

m1 = [1 2 3 4 5 6 7 8 9 10];

而矩阵二包含

m2 = [11 12 13 14 15 16 17 18 19 20];

虽然这只满足我的条件,只有两个矩阵而不是5,但我最好需要随机生成所有矩阵。除了随机生成矩阵并检查生成的所有值之外,还有更有效的方法吗?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

>> l=[1:20,randi(20,1,30)];
>> vec=l(randperm(length(l)));
>> v=reshape(vec,5,10);

第一行生成一个从1到20的50个数字的数组。它保证每个这样的数字至少出现一次。第二行随机化数字的顺序。第三行将矢量重新整形为数组数组(即2D矩阵,其中每一行都是数组之一)。