我在明确说明我要做什么时遇到了一些麻烦,所以我会详细说明。我有一个矩阵 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));