2013-09-28 66 views
2

定制的概率分布的我试图模拟分布如下:模拟在Matlab

a | 0 | 1 | 7 | 11 | 13 
----------------------------------------- 
p(a) | 0.34 | 0.02 | 0.24 | 0.29 | 0.11 

我已经模拟了一个类似的问题:0.3,0.1,0.4和0.2的机会型四球。我创建了一个矢量F = [0 0.3 0.4 0.8 1],并使用repmat将它增长了1000行。然后我将它与使用相同的repmat方法生长5列的1000个随机数的列向量进行比较。我比较了这两种情况,计算了矩阵的和矢量,并计算了差值以得到频率(例如[301 117 386 196])。 。

但是对于目前的分布,我不知道如何创建初始矩阵F以及我是否可以使用之前使用过的相同方法。

我需要答案是“矢量化”,所以没有(for,whileif)循环。

This question on math.stackexchange

回答

1

如果你创建以下数组:

largeNumber = 1000000; 
a=repmat([0], 1, largeNumber*0.34); 
b=repmat([1], 1, largeNumber*0.02); 
% ... 
e=repmat([13], 1, largeNumber*0.11); 

然后您连接所有这些阵列(让您的输入与它们对应的概率为代表的单一阵列),洗牌他们,并提取第一个N元素以获取从您的发行版中绘制的维向量N

编辑:当然this答案是要走的路。