2

我正在尝试模拟以下分布:

 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) 循环。

math.stackexchange 上的这个问题

4

1 回答 1

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从您的分布中绘制的维向量。

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

于 2013-09-28T12:47:55.200 回答