从三维概率分布生成随机数

时间:2013-07-16 16:52:38

标签: distribution probability

如何从给定的三维PDF生成随机数?概率分布函数给出了在3D空间中具有任何给定的cooridinetes的粒子的概率。

我已经定义了PDF的功能,我可以不连续地对它进行评估,但我不知道从那里去哪里。我会使用逆变换采样的方法,但由于PDF是3D,我不知道我是否可以计算离散累积分布函数。是否可以使用其他方法执行此操作?

由于

2 个答案:

答案 0 :(得分:0)

如果您的空间坐标系是离散的,请将其视为单变量生成问题以生成三元组。

如果你在谈论连续发行,你可能想要使用条件概率。原则上你应该能够导出X的边际分布,给定X的Y的条件分布,以及给定X和X的条件分布。 Y.然后从边际和条件分布中依次生成X,Y和Z.

在实践中,这可能非常具有挑战性。

附录

也许最简单的方案是生成长度为3的多维法向量。这将在原点附近产生最高密度,并在所有方向上对称地逐渐变细。如果密度在某个其他位置最高,则可以使用平均向量替换它,可以使用不同的方差独立缩放维度,或者可以通过指定方差/协方差矩阵来获得相关法线来诱导任意轴对齐。

答案 1 :(得分:0)

如果可以容忍离散化三个维度,则可以通过为3D分布生成累积分布来进行此操作,其方式类似于对1D分布进行此操作的方式。让我解释一下:

在1D中,取p(x)并离散化得到x上的p i = p(x i )。您可以将p i 视为代表您的概率分布的直方图。 p i 是在x i 表示的x范围内p(x)的积分,该整数具有一定的宽度。累积分布C(x i )就是p i 直到x i 的总和,并且将是'S '形的单调函数,范围在0到1之间。然后绘制0到1之间与C i 对应的均匀随机数,并查看这些映射对哪个x i 赋值

一个2D示例就足以了解上述内容如何推广到超过1D的地方:想象一下可以将p(x i ,y j离散化的归一化p(x,y) )。然后,您可以对其求和,从而得到C i,j = C(x i ,y j )。您只需选择在进行集成时是先使用'x i '还是'y j '。要么像C 1,1 ,C 2,1 ,...,C n,1 ,C 1一样蜿蜒,2 ,...或翻转索引。无论哪种情况,结果都是0到1之间的唯一值的C i,j 数组。然后,您可以选择0到1之间与C i对应的均匀随机数, j ,然后映射到唯一的x i ,y j 坐标对。这样可以从离散概率分布中获得一个随机数,并自动处理x和y之间存在的所有相关性。

如果需要,可以使坐标离散化非常好,但是随着您从(https://en.wikipedia.org/wiki/Curse_of_dimensionality)中采样的维数增加,这变得很昂贵。