生成x个随机变量的最快方法

时间:2015-05-24 05:33:50

标签: matlab vectorization computation-theory

index = [10 100 1000 10000 100000]

让我们说我想生成10, 100,...,100000(对应于上面的索引)带有参数1/10的指数随机变量。我当然使用for循环并使用命令

来完成此操作
x = exprnd(0.1,100,1)

还可以使用

从均匀随机变量生成指数随机变量
x = -10*log(u)

在这种方法中,我首先生成均匀随机变量,然后将矢量u插入前一个等式中。这种方法在计算时间方面更快。

我如何加快这个过程?我可以用矢量化来做,也就是说,没有for循环吗?

2 个答案:

答案 0 :(得分:0)

我将创建一个长度为sum(index)的长向量,然后将其划分为我想要的不同大小。

这将是最快的方式。

答案 1 :(得分:0)

试试这个:

expFun = @(size)exprnd(0.1,size,1);

index = [10 20 30 40];
data = cellfun(expFun,mat2cell(index,ones(size(index,1),1),ones(1,size(index,2))),'UniformOutput',false);