这行代码应该会产生指数级的服务时间,但我无法理解其背后的逻辑
This line of code is supposed to generate exponential service times, but I am not able to get the logic behind it
这行代码应该会产生指数级的服务时间,但我无法理解其背后的逻辑。
% Exponential service time with rate 1
mean = 1;
dt = -mean * log(1 - rand());
这是source link,但是打开例子需要MATLAB
我也在想 exprnd(1)
是否会给出从均值为 1 的指数分布生成数字的相同结果?
你说得对!
首先,请注意 MATLAB 通过均值而不是比率对指数分布进行参数化,因此 exprnd(5)
的比率为 lambda = 1/5
。
这行代码是做同样事情的另一种方法:
-mean * log(1 - rand());
这是inverse transform for the Exponential distribution。
如果X服从指数分布,则
并重写 cumulative distribution function (CDF) 并让 U ~ Uniform(0,1),我们可以推导出逆变换。
注意最后一个相等是因为1-U和U在分布上是相等的。换句话说,1-U ~ Uniform(0,1) 和 U ~ Uniform(0,1).
您可以使用此示例代码和多种方法自行测试。
% MATLAB R2018b
rate = 1; % mean = 1 % mean = 1/rate
NumSamples = 1000;
% Approach 1
X1 = (-1/rate)*log(1-rand(NumSamples,1)); % inverse transform
% Approach 2
X2 = exprnd(1/rate,NumSamples,1);
% Approach 3
pd = makedist('Exponential',1/rate) % create probability distribution object
X3 = random(pd,NumSamples,1);
编辑: OP 询问是否有理由从 CDF 而不是从 probability density function (PDF) 生成。这是我试图回答的。
逆变换方法利用了CDF,利用了CDF本身就是一个概率,所以必须在区间[0, 1]上。然后很容易生成非常好的(伪)随机数,这些随机数将位于该间隔内。 CDF 足以唯一地定义分布,反转 CDF 意味着其唯一的 "shape" 将正确地将 [0, 1] 上的均匀分布数字映射到域中的 non-uniform 形状概率密度函数 (PDF)。
您可以看到 CDF 执行此非线性映射 in this figure。
PDF 的一个用途是 Acceptance-Rejection methods, which can be useful for some distributions including custom PDFs (thanks to @pjs 来唤起我的记忆)。
这行代码应该会产生指数级的服务时间,但我无法理解其背后的逻辑。
% Exponential service time with rate 1
mean = 1;
dt = -mean * log(1 - rand());
这是source link,但是打开例子需要MATLAB
我也在想 exprnd(1)
是否会给出从均值为 1 的指数分布生成数字的相同结果?
你说得对!
首先,请注意 MATLAB 通过均值而不是比率对指数分布进行参数化,因此 exprnd(5)
的比率为 lambda = 1/5
。
这行代码是做同样事情的另一种方法:
-mean * log(1 - rand());
这是inverse transform for the Exponential distribution。
如果X服从指数分布,则
并重写 cumulative distribution function (CDF) 并让 U ~ Uniform(0,1),我们可以推导出逆变换。
注意最后一个相等是因为1-U和U在分布上是相等的。换句话说,1-U ~ Uniform(0,1) 和 U ~ Uniform(0,1).
您可以使用此示例代码和多种方法自行测试。
% MATLAB R2018b
rate = 1; % mean = 1 % mean = 1/rate
NumSamples = 1000;
% Approach 1
X1 = (-1/rate)*log(1-rand(NumSamples,1)); % inverse transform
% Approach 2
X2 = exprnd(1/rate,NumSamples,1);
% Approach 3
pd = makedist('Exponential',1/rate) % create probability distribution object
X3 = random(pd,NumSamples,1);
编辑: OP 询问是否有理由从 CDF 而不是从 probability density function (PDF) 生成。这是我试图回答的。
逆变换方法利用了CDF,利用了CDF本身就是一个概率,所以必须在区间[0, 1]上。然后很容易生成非常好的(伪)随机数,这些随机数将位于该间隔内。 CDF 足以唯一地定义分布,反转 CDF 意味着其唯一的 "shape" 将正确地将 [0, 1] 上的均匀分布数字映射到域中的 non-uniform 形状概率密度函数 (PDF)。
您可以看到 CDF 执行此非线性映射 in this figure。
PDF 的一个用途是 Acceptance-Rejection methods, which can be useful for some distributions including custom PDFs (thanks to @pjs 来唤起我的记忆)。