gpt4 book ai didi

java - 使用(负)指数分布生成 0 到 1 之间的随机数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:47:27 25 4
gpt4 key购买 nike

嘿嘿,

我正在尝试生成一个介于 0.0 和 1.0 之间且具有指数/负指数分布的随机数。有一个 article ,这表明您必须获得“分位数函数”。但是结果还是大于1.0。所以我需要以某种方式扩展我的等式。

我的目标是生成一个范围内的随机数,例如,较高/较低的值具有较高的概率。 (分布应该是可扩展的)

相关问题(不要将结果截断为[0,1]):

最佳答案

负指数分布在 [0, ∞) 范围内得到支持,因此我将您的问题解释为对截断负指数的请求。下限 l >= 0、上限 h > l 和比率 λ 的这种野兽的累积分布函数是

F(x) = (exp(-λl) - exp(-λx)) / (exp(-λl) - exp(-λh))

我们可以通过将其设置为 U,一个统一的 (0,1) 随机数,并求解 x 来找到反转:

X = -ln(exp(-λl) - (exp(-λl) - exp(-λh)) * U) / λ

由于您分别指定了 0 和 1 的下限和上限,因此这减少为

X = -ln(1 - (1 - exp(-λ)) * U) / λ

U 替换为对您最喜欢的 U(0,1) 生成器的调用,这就是您生成具有所需分布的 X 的算法。

这是使用 λ = 5 生成的 10,000 个值的直方图。 λ 的值越小,分布越平坦,值越大,指数下降越快。

10,000 truncated exponentials with lambda = 5

关于java - 使用(负)指数分布生成 0 到 1 之间的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20385964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com