使用Box-Muller变换生成具有任意sigma和mean的伪随机数

use*_*523 3 language-agnostic random algorithm

我正在尝试实现Box-Muller变换以生成具有高斯分布的伪随机数.显然,此方法仅生成带有sigma 1和mean 0的数字.如何使用它生成具有任意sigma的数字并表示?

pjs*_*pjs 10

不需要单独的方法.统计学上众所周知的结果是,您可以通过简单变换在标准法线(高斯)值Z与普通高斯X之间来回转换,平均值为μ和标准偏差西格玛X = sigma*Z + mu,反之亦然Z = (x - mu)/sigma.这就是为什么统计书只需要/提供一个高斯分布表.


Jas*_*n C 2

Box-Muller 生成具有单位方差的分布,因此您的问题的简短答案是:您不使用 Box-Muller 生成具有任意 sigma 的数字。

然而,长篇大论的答案却更加光明。这是一篇改进的 Box-Muller 算法的论文,支持任意方差。这非常简单。

至于平均,那很简单。只需将平均值添加到结果中即可。

归根结底是李·丹尼尔·克罗克在评论中提到的;乘以西格玛并加上平均值。