我正在寻找一种在python中尽可能快地使用我自己的分布在给定间隔之间提取N个随机样本的方法.这就是我的意思:
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 = 1000N_rand_samples = ran_func_sample(my_dist,a,b,N)
其中ran_func_sample是我所追求的,b是绘制样本的限制.在python中有什么类似的东西吗?
解决方法 您需要使用逆变换采样方法来获取根据您想要的法则分布的随机值.使用此方法您可以只应用反转函数在区间[0,1]中具有标准均匀分布的随机数.
在找到反转函数后,您可以根据所需的分布以这种明显的方式分配1000个数字:
[inverted_function(random.random()) for x in range(1000)]
有关逆变换采样的更多信息:
> http://en.wikipedia.org/wiki/Inverse_transform_sampling
此外,StackOverflow与该主题相关的问题很好:
> Pythonic way to select list elements with different probability
总结以上是内存溢出为你收集整理的python – 快速任意分布随机抽样全部内容,希望文章能够帮你解决python – 快速任意分布随机抽样所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)