8

我正在尝试在 Objective-C 中生成一个随机高斯双精度(与random.nextGaussianJava 相同)。然而rand_gauss()似乎不起作用。有谁知道实现这一目标的方法?

4

1 回答 1

10

此链接显示如何使用标准random()函数计算它。

我应该注意,您可能必须制作将 from 的输出转换为 from 的例程,ranf()但这应该不会太难。random()[0,MAX_INT][0,1]

从链接的文章:

Box-Muller 变换的极坐标形式在数值上更快更稳健。它的算法描述为:float x1, x2, w, y1, y2;

     do {
             x1 = 2.0 * ranf() - 1.0;
             x2 = 2.0 * ranf() - 1.0;
             w = x1 * x1 + x2 * x2;
     } while ( w >= 1.0 );

     w = sqrt( (-2.0 * ln( w ) ) / w );
     y1 = x1 * w;
     y2 = x2 * w;
于 2012-01-08T18:04:03.933 回答