我在哪里可以了解如何将均匀的随机分布转换为其他分布

机器算法验证 模拟
2022-03-27 08:07:14

我关心蒙特卡罗模拟,我正在检查我的代码是否存在一些错误。我刚刚意识到(艰难的方式)要生成一个指向随机方向的单位向量,我不能简单地选择 3 个(或任何其他数字)随机数并将它们归一化。除了声称生成的向量甚至没有可能指向任何方向之外,我不明白为什么我不能这样做。我找不到那里的数学,我怀疑这主要是由于缺乏适当的搜索词。我应该搜索什么?我在哪里可以找到解释?最好不假设先验知识。

2个回答

在 2 球体上获得随机方向的一个好方法可能是均匀,均匀然后取点 z[1,1]θ[0,2π]

(1z2cosθ,1z2sinθ,z).

我不会做数学来说明为什么这些在球体上统一给出点。这并不难。

对于大尺寸,最好的方法可能是从高斯分布进行归一化您可以通过查看概率密度函数来了解其工作原理。高斯函数是所以当你将相乘时,你会得到显然是球对称的。nx1,xn(x1,x2,,xn)

12πe12x2,
n
1(2π)n/2e12ixi2,

如果您在 -1 和 1 之间选择 3 个独立的随机数,您基本上是在选择立方体内的一个点。从该图像中,您可以很容易地看到,在归一化之后,您的向量指向立方体主对角线的可能性比它指向 ,这仅仅是因为有立方体内沿主对角线的点比沿任何坐标轴的方向多。3x3

正如 Jerry Schirmer 指出的那样,您可以采用两个角度,然后从那里构建您的矢量,基本上使用球坐标。这个想法也是在这里发展起来的。则摆脱它们,从而有效地将您的 3-D 点限制在一个球体内。x2+y2+z2>1

至于对该主题的一般阅读,您希望寻找任意分布的采样,尽管您会发现大部分内容都是针对一维分布的,最通用的方法可能是逆变换采样