所以,我正在尝试使用 gmp对于我正在做的一些计算,在某些时候我需要从正态分布中生成一个伪随机数 (prn)。
由于 gmp 有一个统一的随机变量,这已经很有帮助了。但是,我发现很难选择应该使用哪种方法从统一的方法生成正态分布。实际上,我的问题是 gmp 只有简单的操作,所以例如我不能使用 cos 或 erf 评估,因为我必须自己实现。
我的问题是我可以在多大程度上从 gmp 上的正态分布生成 prn,如果这非常困难,是否有任何已经实现正态分布的任意精度库。
作为无效方法的两个示例(从 this question 检索):
Ziggurat algorithm使用 f 的评估,在这种情况下它是一个非整数指数,因此不受 gmp 支持。
Box–Muller Transform使用 gmp 不支持的 cos 和 sin。
最佳答案
Marsaglia polar method如果您的图书馆有 ln
,就可以了。
关于c++ - 在 gmp 任意精度上生成正态分布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10982661/