如何从自定义分布编写采样算法?

1 投票
1 回答
834 浏览
提问于 2025-04-18 09:00

我正在生成随机的星系,这些星系的视线速度是从正态分布中随机抽取的,位置也是从二维高斯分布中随机生成的。不过,从NFW 分布来获取这些位置会更符合实际情况,NFW 分布的公式如下:

rho(r) = rho_0/(r/R_s*(1+r/R_s)^2

这里的 rho_0R_s 是一些固定的参数。

我该如何写一个算法来从这个分布中抽样呢?

简单来说,我想要放置几百个星系,使它们遵循这个密度分布。

我之前一直在使用 numpy.random.normal高斯分布中抽样,但我想从NFW分布中抽样,而不是高斯分布。我知道学习一些统计学知识可能是个不错的开始,但如果能给我一些方向上的建议,我会非常感激。

1 个回答

0

假设你有一个叫做rho(r)的函数,它的输入值范围是从0到1,输出值也在0到1之间,那么这个过程就很简单了:

def getRhoSample():
  #get uniform random number
  value = numpy.random.random()

  #sample my custom function
  return rho(value)

撰写回答