Main Content

lognrnd

对数正态随机数

说明

示例

r = lognrnd(mu,sigma) 从分布参数 mu(对数值的均值)和 sigma(对数值的标准差)指定的对数正态分布生成一个随机数。

r = lognrnd(mu,sigma,sz1,...,szN) 生成对数正态随机数数组,其中 sz1,...,szN 指示每个维度的大小。

示例

r = lognrnd(mu,sigma,sz) 生成对数正态随机数数组,其中向量 sz 指定 size(r)

示例

全部折叠

根据对数正态分布的均值和方差中求得分布参数,并从分布中生成对数正态随机值。

根据均值和方差求得分布参数 musigma

m = 1; % mean
v = 2; % variance
mu = log((m^2)/sqrt(v+m^2))
mu = -0.5493
sigma = sqrt(log(v/(m^2)+1))
sigma = 1.0481

生成一个对数正态随机值。

rng('default') % For reproducibility
r = lognrnd(mu,sigma)
r = 1.0144

保存随机数生成器的当前状态。然后从参数为 3 和 10 的对数正态分布创建一个 1×5 对数正态随机数向量。

s = rng;
r = lognrnd(3,10,[1,5])
r = 1×5
109 ×

    0.0000    1.8507    0.0000    0.0001    0.0000

将随机数生成器的状态恢复为 s,然后创建一个由随机数组成的新的 1×5 向量。值与之前相同。

rng(s);
r1 = lognrnd(3,10,[1,5])
r1 = 1×5
109 ×

    0.0000    1.8507    0.0000    0.0001    0.0000

创建一个由对数正态分布的随机数组成并且大小与现有数组相同的矩阵。

A = [3 2; -2 1];
sz = size(A);
R = lognrnd(0,1,sz)
R = 2×2

    1.7120    0.1045
    6.2582    2.3683

您可以将前两行代码合并成一行。

R = lognrnd(1,0,size(A));

输入参数

全部折叠

对数正态分布的对数值的均值,指定为标量值或由标量值组成的数组。

要从多个分布中生成随机数,请使用数组指定 musigma。如果 musigma 均为数组,则数组大小必须相同。如果 musigma 是标量,则 lognrnd 会将标量参数扩展为与另一个参数大小相同的常量数组。r 中的每个元素均是从 musigma 中对应元素所指定的分布中生成的随机数。

示例: [0 1 2; 0 1 2]

数据类型: single | double

对数正态分布的对数值的标准差,指定为非负标量值或由非负标量值组成的数组。

如果 sigma 为零,则输出 r 始终等于 exp(mu)

要从多个分布中生成随机数,请使用数组指定 musigma。如果 musigma 均为数组,则数组大小必须相同。如果 musigma 是标量,则 lognrnd 会将标量参数扩展为与另一个参数大小相同的常量数组。r 中的每个元素均是从 musigma 中对应元素所指定的分布中生成的随机数。

示例: [1 1 1; 2 2 2]

数据类型: single | double

每个维度的大小,指定为单独的整数参数。例如,指定 5,3,2 会从对数正态概率分布生成一个由随机数组成的 5×3×2 数组。

如果 musigma 是数组,则在进行任何必要的标量扩展后,指定的维度 sz1,...,szN 必须与 musigma 的公共维度相匹配。sz1,...,szN 的默认值为公共维度。

  • 如果您指定单一值 sz1,则 r 是大小为 sz1×sz1 的方阵。

  • 如果任一维度的大小是 0 或负数,则 r 是空数组。

  • 对于第二个维度以上的维度,lognrnd 会忽略大小为 1 的尾部维度。例如,lognrnd(mu,sigma,3,1,1,1) 生成由随机数组成的 3×1 向量。

示例: 5,3,2

数据类型: single | double

每个维度的大小,指定为由整数组成的行向量。例如,指定 [5 3 2] 会从对数正态概率分布生成一个由随机数组成的 5×3×2 数组。

如果 musigma 是数组,则在进行任何必要的标量扩展后,指定的维度 sz 必须与 musigma 的公共维度相匹配。sz 的默认值为公共维度。

  • 如果您指定单一值 [sz1],则 r 是大小为 sz1×sz1 的方阵。

  • 如果任一维度的大小是 0 或负数,则 r 是空数组。

  • 对于第二个维度以上的维度,lognrnd 会忽略大小为 1 的尾部维度。例如,lognrnd(mu,sigma,[3,1,1,1]) 生成由随机数组成的 3×1 向量。

示例: [5 3 2]

数据类型: single | double

输出参数

全部折叠

对数正态随机数,以标量值或标量值数组的形式返回,其维度由 sz1,...,szNsz 指定。r 中的每个元素均是从 musigma 中对应元素所指定的分布中生成的随机数。

详细信息

全部折叠

对数正态分布

对数正态分布是一种概率分布,其对数具有正态分布。

对数正态随机变量的均值 m 和方差 v 是对数正态分布参数 µ 和 σ 的函数:

m=exp(μ+σ2/2)v=exp(2μ+σ2)(exp(σ2)1)

此外,您可以根据均值 m 和方差 v 计算对数正态分布参数 µ 和 σ:

μ=log(m2/v+m2)σ=log(v/m2+1)

替代功能

  • lognrnd 是对数正态分布特有的函数。Statistics and Machine Learning Toolbox™ 还提供泛型函数 random,它支持各种概率分布。要使用 random,请创建一个 LognormalDistribution 概率分布对象,并将该对象作为输入参量传递,或指定概率分布名称及其参数。请注意,分布特有的函数 lognrnd 比泛型函数 random 的执行速度要快。

  • 要以交互方式生成随机数,请使用 randtool,它是用于生成随机数的用户界面。

参考

[1] Marsaglia, G., and W. W. Tsang. “A Fast, Easily Implemented Method for Sampling from Decreasing or Symmetric Unimodal Density Functions.” SIAM Journal on Scientific and Statistical Computing. Vol. 5, Number 2, 1984, pp. 349–359.

[2] Evans, M., N. Hastings, and B. Peacock. Statistical Distributions. 2nd ed., Hoboken, NJ: John Wiley & Sons, Inc., 1993.

扩展功能

版本历史记录

在 R2006a 之前推出