【问题标题】:Generate a random variable with an exponential distribution [closed]生成具有指数分布的随机变量
【发布时间】:2014-01-06 21:11:13
【问题描述】:

在使用rand 例程的 Matlab 中,我应该如何编写代码以从指数分布生成 500 个样本,其 pdf 为:

(1/mu)*exp(-x/mu); x>=0

【问题讨论】:

标签: matlab statistics random-sample exponential-distribution


【解决方案1】:

假设您确实必须使用 rand 函数来执行此操作:利用 minus logarithm of a normalized uniform RV 是归一化指数 RV 的属性:

samples = -mu*log(rand(1,500));

【讨论】:

  • 您可以在这种情况下使用reallog
【解决方案2】:

如果您有统计工具箱,您可以像使用 rand 一样简单地使用 exprnd

r = exprnd(mu);

r 的大小将是平均值的大小,mu,或

r = exprnd(mu,m,n);

其中mu 是标量平均值,mn 是所需输出的大小。如果您输入edit exprnd,您会看到代码实际上与@LuisMendo 提供的代码完全相同。您可能会发现与exponential distribution 相关的其他功能对您有帮助,例如exppdfexpcdf。这些也很简单,并实现了您可以在教科书或*中找到的基本方程式。

【讨论】:

    【解决方案3】:

    使用random 函数。 例如,要创建一个 4*6 矩阵,其中 mu=1.3 且具有指数分布,请使用:

    random('Exponential',1.3,4,6)
    

    random('exp',1.3,4,6)
    

    【讨论】: