【发布时间】:2014-02-01 18:07:39
【问题描述】:
random 模块 (http://docs.python.org/2/library/random.html) 有几个固定 函数可以从中随机采样。例如random.gauss 将从具有给定均值和 sigma 值的正态分布中随机抽取点。
我正在寻找一种方法,使用我自己在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 = 1000
N_rand_samples = ran_func_sample(my_dist, a, b, N)
ran_func_sample 是我所追求的,a, b 是从中抽取样本的限制。 python 里有这种东西吗?
【问题讨论】:
-
你可以调用你的函数 N 次。但是,您仍然需要指定要从哪个分布中选择
x值。 -
我的分发是我的职责。我需要在某个时间间隔内随机评估该函数 N 次。
-
你的函数不是一个分布。您需要根据您调用它的参数来决定分布是什么。如果您想在“某个区间”之间传递 N 个随机值,那么您在代码示例中在哪里指定该区间?您是希望从该间隔中统一选择随机的
x值,还是以其他方式? -
我忘了指定间隔,我将它添加到代码中。你是对的,我解释说自己很糟糕地给出了一个
x**2函数而不是一个分布。我现在会尝试解决这个问题。 -
我有这样的离散分布代码。一切都可以用离散分布来近似,它使事情变得更简单(尽管仍然很重要,以获得数值稳健性)。如果这对你有帮助,我可以把它包起来。
标签: python performance random