如何确定随机数向量的所有组合?

How to determine all combinations of a random number of vectors?

我有 n 个带有一些数字的向量(n 是一个随机数) 我如何确定我拥有的所有数字的所有组合? 例如:

    a=0;
    for i=1:length(vector1)
      for j=1:length(vector2)
        for k=1:length(vector3)
          ... (n times)
          a=a+1;
          M{a}=[i,j,k,...];
        end
      end
    end

一种可能combvec。此函数为您提供输入矩阵的列向量的所有组合。您可以执行以下操作来获取随机向量中元素的组合。

vector1 = random('Normal', 0, 1, 1, 5);
vector2 = random('Normal', 0, 1, 1, 5);
vector3 = random('Normal', 0, 1, 1, 5);
M = combvec(vector1, vector2, vector3);

M 将是一个 3x125 矩阵,其中每一列是 vector1 中的一个元素、vector2 中的一个元素和 vector3[=21= 中的一个元素]

如果您需要 n 个向量,其中 n 是一个随机数,另一种方法是使用 cartesian product 对向量进行索引。

n = randi(5);
all_vectors = random('Normal', 0, 1, n, 5);
indices = mat2cell(repmat([1:5], n, 1), ones(n ,1))';
[x y z] = ndgrid(indices{:});
cartProd = [x(:), y(:), z(:)];
M = all_vectors(cartProd);