【问题标题】:What is the best way to generate normally distributed random numbers in C? [duplicate]在 C 中生成正态分布随机数的最佳方法是什么? [复制]
【发布时间】:2014-12-20 15:37:39
【问题描述】:

我需要在我的程序中使用正态分布的随机数。假设我需要生成 x (大小为 R^(m x n) ),其元素来自零均值和一方差的高斯分布。我如何在 C 中准确地做到这一点?

【问题讨论】:

标签: c random gaussian normal-distribution


【解决方案1】:

如果你有一个统一的随机生成器,有很多算法可以产生正态分布。查看维基百科文章的this section。一种可能的方法是使用central limit theorem。这里的方法是生成许多均匀分布的整数值,然后计算它们的算术平均值。

【讨论】:

  • 最实用的方法?需要十几个统一样本才能获得至少大致正态分布的单个变量,而获得更好的近似值则需要更多。 Box-Muller 方法并不是特别复杂。它只需要平方根、对数和三角函数——即libm。可能没有更多的代码行。
  • @delnan 实际上我没有阅读所有建议的想法。我只是用中心极限定理做了类似的事情。我将重新表述答案。
猜你喜欢
  • 2012-03-17
  • 2011-04-23
  • 2018-06-22
  • 2011-12-09
  • 2016-01-08
  • 2016-05-23
  • 2010-10-12
  • 2013-12-08
  • 2011-01-20
相关资源
最近更新 更多