在Objective-C / C中生成随机高斯双精度

我正在尝试在Objective-C中生成随机高斯双random.nextGaussian (与Java中的random.nextGaussian相同)。 但是rand_gauss()似乎不起作用。 有人知道实现这一目标的方法吗?

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

我应该注意到你可能必须使用ranf()例程将random()的输出从[0,MAX_INT]转换为[0,1] ,但这不应该太难。

来自链接的文章:

Box-Muller变换的极性forms在数值上更快且更稳健。 它的算法描述是: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;