该random模块(http://docs.python.org/2/library/random.html)具有几个 固定 功能,可以从中随机采样。例如,random.gauss将从具有给定均值和sigma值的正态分布中采样随机点。
random
random.gauss
我正在寻找一种方法,该方法可以N使用自己的分布 尽可能快地 在给定间隔内提取一定数量的随机样本python。这就是我的意思:
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吗?
ran_func_sample
a, b
您需要使用 逆变换采样 方法来获取根据所需定律分布的随机值。使用这种方法,您可以将 反函数 应用于区间[0,1]中具有标准均匀分布的随机数。
找到反函数后,您将以明显的方式根据所需的分布获得1000个数字:
[inverted_function(random.random()) for x in range(1000)]
有关 逆变换采样的 更多信息: