如何使用 Box-Muller 变换生成 n 维正态随机变量

机器算法验证 正态分布 Python 随机变量 随机生成
2022-03-29 12:50:59

我正在尝试生成随机变量。我读到了Box-Muller 变换,它是一种生成一对正态变量、二维正态分布的方法。但是如何使用这种方法扩展该转换以生成 3-d、4-d 等正常变量?还是有不同的方法可以考虑?

1个回答

Box-Muller 从成对的独立制服生成成对的独立法线。

要获得两个以上的独立法线,请生成更多制服。如果要 17 个法线,生成 18 个制服,得到 9 对法线。丢弃一个。如果你的 18 套制服是独立的,那么你的 17 套法线应该是独立的。

http://en.wikipedia.org/wiki/Box%E2%80%93Muller_transform

(顺便说一句,Marsaglia 似乎首先发明了这种方法,我想也许是链接中详述的极地方法形式。但因为是战后,它被视为秘密,他无法发表.)

您还可以通过从独立的法线开始获得相关法线,例如通过使用协方差矩阵的 Choleski 分解。