根据列索引值的权重随机选取列索引 (MATLAB)



我在明确说明我要做什么时遇到了一些麻烦,所以我会详细说明。我有一个矩阵 A(n x n),只有零和一。现在,我试图做的是随机选择其中一列(所以从 1 到 n),但是一列中的列越多,我选择该列的可能性就越大。所以,首先,我将他们的权重定义为

 weight = sum(A,1);
 weight = weight/sum(weight);

这给了我从 0 到 1 的权重。不确定这是否比 0 到 N 更容易,但没关系。这就是我陷入困境的地方..我现在如何根据实际值随机选择这些 N 个值之一?老实说,我真的不知道。

使用 randsample(统计工具箱),它允许您指定权重:

col = randsample(1:size(A,2), 1, true, weight);

然后你的列A(:,col).

如果您没有统计工具箱:

col = sum(rand<cumsum(weight));

最新更新