我正在生成随机星系,其视线速度来自正态分布,随机位置也来自二维高斯。从以下人员给出的 NFW 配置文件 中绘制这些位置更实际一些:
rho(r) = rho_0/(r/R_s*(1+r/R_s)^2
其中 rho_0
和 R_s
是常量参数。
如何编写算法从该分布中采样?
基本上,我正在尝试找出遵循这种密度分布的数百个星系。
我一直在使用 numpy.random.normal
从 Gaussians 中采样,但我想从 NFW 中采样> 配置文件而不是 Gaussians。我敢肯定,一些统计数据培训可能是一个很好的起点,但在正确的方向上的一点会有所帮助并且非常感谢。
最佳答案
假设您有一个函数 rho(r),它从 [0..1] 获取值并从 [0..1] 返回值,那么这很简单:
def getRhoSample():
#get uniform random number
value = numpy.random.random()
#sample my custom function
return rho(value)
关于python - 如何从自定义分布编写抽样算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103163/