【发布时间】:2016-02-20 01:06:27
【问题描述】:
我需要为 N 个元素的给定排列 p 生成 N 个值 1-6 的向量 r(它们可以是重复的)。但是这些值是根据排列的第 i 个值以某种概率分布生成的。
例如我有排列 p = [2 3 1 4] 和概率分布矩阵(Nx6): Pr = [1, 0, 0, 0, 0, 0; 0, 0.5, 0, 0.5, 0, 0; 0, 0, 0, 1, 0, 0; 0.2, 0.2, 0.2, 0.2, 0.2, 0]
第 i 行代表概率。值 1-6 到排列 p 中的元素 i 的分布(它的值,而不是位置),行的总和为 1。
例如,我们可以将值 1 分配给值 1,将值 2 或 4 分配给值 2 等等。所以它可以如下所示:r = [2 4 1 2] 或 r = [4 4 1 5]。
目前我正在使用此代码:
for i = 1:N
r(i) = randsample(1:6,1,true,Pr(p(i),:));
end
但它很慢,我试图避免 for 循环,可能是通过函数 bsxfun 或类似的东西。
请问有人知道吗? :-)
【问题讨论】: