我尝试模拟以下分布:
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方法增长的1000个随机数的列向量进行了比较。我比较了这两个,计算了矩阵的和向量,并计算了差值以获得频率(例如[301 117 386 196])。。
但对于目前的发行版,我不知道如何创建初始矩阵F,也不知道是否可以使用之前使用的相同方法。
我需要答案是“矢量化的”,所以没有(for,while或if)循环。
发布于 2013-09-28 20:47:55
如果您创建以下数组会怎样:
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-dimensional向量。
编辑:当然,this答案是要走的路。
https://stackoverflow.com/questions/19067014
复制相似问题