random
模块 (http://docs.python.org/2/library/random.html) 有几个固定 函数可以从中随机采样。例如 random.gauss
将从具有给定均值和 sigma 值的正态分布中随机抽取点。
我正在寻找一种方法,在 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
中是否有类似的东西?
最佳答案
您需要使用逆变换采样方法来获得根据您想要的规律分布的随机值。使用这种方法你可以应用 反函数 在区间 [0,1] 内具有标准均匀分布的随机数。
找到反函数后,你会得到 1000 个根据需要分布的数字,这种方式很明显:
[inverted_function(random.random()) for x in range(1000)]
更多关于逆变换采样:
另外,StackOverflow 上有一个与主题相关的好问题:
关于python - 快速任意分布随机采样(逆变换采样),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21100716/