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

Fastest Way to Generate x Number of Random Variables

index = [10 100 1000 10000 100000]

假设我想生成 10, 100,...,100000(对应于上面的索引)参数为 1/10 的指数随机变量。我当然是用 for 循环和命令来做到这一点的,例如

x = exprnd(0.1,100,1)

也可以使用

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

在这种方法中,我首先生成均匀随机变量,然后将向量 u 插入到前面的方程中。这种方法在计算时间方面更快。

我怎样才能加快这个过程?我可以用向量化来做到这一点吗,也就是说,没有 for 循环?

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

这是最快的方法。

试试这个:

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);