【问题标题】:Generating a random Gaussian double in Objective-C/C在 Objective-C/C 中生成随机高斯双精度
【发布时间】:2012-01-09 03:53:01
【问题描述】:

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

【问题讨论】:

  • 可惜你没在我上班的时候问,几个月前我查了一下,写了一篇。

标签: objective-c c random gaussian


【解决方案1】:

This link 展示了如何使用标准的random() 函数来计算它。

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

来自链接的文章:

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

【讨论】:

猜你喜欢
  • 2013-08-10
  • 2011-02-11
  • 1970-01-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2021-01-06
  • 1970-01-01
相关资源
最近更新 更多