小编典典

快速任意分布随机采样(逆变换采样)

python

random模块(http://docs.python.org/2/library/random.html)具有几个
固定 功能,可以从中随机采样。例如,random.gauss将从具有给定均值和sigma值的正态分布中采样随机点。

我正在寻找一种方法,该方法可以N使用自己的分布 尽可能快地 在给定间隔内提取一定数量的随机样本python。这就是我的意思:

def my_dist(x):
    # Some distribution, assume c1,c2,c3 and c4 are known.
    f = c1*exp(-((x-c2)**c3)/c4)
    return f

# Draw N random samples from my distribution between given limits a,b.
N = 1000
N_rand_samples = ran_func_sample(my_dist, a, b, N)

这里ran_func_sample是我后和a, b是从中可以得出样本的限制。有这样的东西python吗?


阅读 329

收藏
2020-12-20

共1个答案

小编典典

您需要使用 逆变换采样 方法来获取根据所需定律分布的随机值。使用这种方法,您可以将 反函数 应用于区间[0,1]中具有标准均匀分布的随机数。

找到反函数后,您将以明显的方式根据所需的分布获得1000个数字:

[inverted_function(random.random()) for x in range(1000)]

有关 逆变换采样的 更多信息:

2020-12-20