gpt4 book ai didi

python - 在python中实现特定的分布

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:59 25 4
gpt4 key购买 nike

我想返回 1<l<10概率1/(2^(l-1))

我应该怎么做而不是:

    x = random()
if x < 0.5:
return 2

等等

谢谢

最佳答案

这会很有趣......我对这些东西有点生疏,所以一个好的数学家可以修正我的推理。

要从公式生成分布,您首先需要进行一些积分并计算指定区间的累积密度函数。特别是我们需要开始计算归一化常数。 Compute normalization constant

对于“k”,这个积分给出:

k value

累积密度函数的“意义”是“得到属于我需要的区间的某个数的概率是多少?”。这道题可以换个角度看:“取一个小于或等于10的数的概率一定是1”。这导致以下等式有助于找到参数“C”。请注意,第一个 therm 是 k,第二个 therm 是 2^(1-x) 的一般积分,其中我将 x 替换为 10。 Almost full CDF

解决这个问题我们最终得到了 CDF(同样,找到它的方法可能更简单):

Final CDF

此时我们需要反转 X 的 CDF。X 现在是我们介于 0 和 1 之间的随机数生成器。公式为: random values distributed with the asked law

在 python 代码中,我尝试了以下操作:

import numpy as np
import matplotlib.pyplot as plt

a=[ 1- np.log2(1-(1-2**(-9))*np.random.rand()) for i in range(10000)]

plt.hist(a, normed=True)

enter image description here

有道理吗?

关于python - 在python中实现特定的分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58625669/

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