random
模块 ( http://docs.python.org/2/library/random.html ) 有几个 固定 的函数可以随机抽样。例如 random.gauss
将从具有给定均值和西格玛值的正态分布中抽取随机点。
我正在寻找一种方法来 尽可能快地 使用我自己的分布在 --- 中提取给定间隔之间随机样本的数字 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
中是否有此类内容?
原文由 Gabriel 发布,翻译遵循 CC BY-SA 4.0 许可协议
您需要使用 逆变换采样 方法来获得根据您想要的规律分布的随机值。使用此方法,您可以将 倒函数 应用于区间 [0,1] 中具有标准均匀分布的随机数。
找到倒函数后,您将以这种明显的方式根据所需的分布得到 1000 个数字:
有关 逆变换采样 的更多信息:
此外,StackOverflow 上有一个与该主题相关的好问题: