我在明确说明我要做的事情时遇到了一些麻烦,所以我会详细说明。我有一个矩阵A(n乘n),只有零和1。现在,我尝试做的是随机选择一个列(从1到n),但是列中的列越多,我选择该列的可能性就越大。所以,首先我将它们的权重定义为
weight = sum(A,1);
weight = weight/sum(weight);
给我一个从0到1的权重。不确定它是否比从0到N更容易,但是没问题。这里我遇到了困难。我现在如何随机选择这些N值之一,取决于实际值?说实话,我真的不知道。
答案 0 :(得分:3)
使用randsample
(统计工具箱),可以指定权重:
col = randsample(1:size(A,2), 1, true, weight);
然后您的专栏为A(:,col)
。
如果您没有统计工具箱:
col = sum(rand<cumsum(weight));