伪随机Lognormal值

时间:2012-06-21 20:47:25

标签: algorithm random logarithm

我正在尝试从两个对数正态分布中生成随机值对 - 捕获的是其中一个必须小于另一个。例如:

a1 <- log(47.31)
b1 <- sqrt(2*log(50.84/47.31))
a2 <- log(47.31)
b2 <- sqrt(2*log(59.34/47.31))

x1 <- rlnorm(1,a1,b1)
x2 <- rlnorm(1,a2,b2)

我需要某种方法来确保x1&lt; X2。有没有光滑的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

嗯,是的,不是。最简单的方法是检查是否满足条件,如果不满足,则重新生成randoms。但结果是你的变量不再以你开始的统计分布为特征:过滤过程偏向x1低和x2高。但是如果你对此没问题,那么只需循环直到满足所需的条件......理论上这可能需要无数次迭代,但我认为你不是那么不走运。)。

如果两个发行版是相同的,那就更简单了:只要交换它们,如果x1&gt; x2(我认为它们不相等!)