【问题标题】:2d normal distribution c++二维正态分布 C++
【发布时间】:2015-12-09 10:32:48
【问题描述】:

编辑:4 年后

如果有人在这里遇到类似的问题,我从来没有设法让我满意地解决这个问题。

如果您在理解问题是什么时遇到问题,这与我担心生成正态分布会产生类似的失真有关使用极坐标围绕 2d 平面上的中心点,到使用极坐标围绕点生成圆中点的均匀分布时遇到的失真。请参阅 here 了解我所指的失真。

对我来说,解决方案只是与我的客户讨论他们到底想要什么,对他们来说,确保距离正确比确保径向分布正确更重要,因为我们在截止日期前在那个时候意味着它的结束。


原帖如下:

所以,我的数学知识仅限于 3 岁的高中文凭,所以我想这个问题之前已经回答过,但不是我能理解的。

我被要求采用我们公司使用的一种算法,该算法之前在一个圆内生成均匀分布的二维点,其中一个从中心点生成正态分布内的点。

以前我一直使用this method 来计算一个点的 x 和 y 值,当它是一个均匀分布时,我使用 boost 来代表 C# 的随机生成算法。

我真的很感谢这里的任何帮助,最好使用 boost(获得批准在这里使用的新外部库是一种痛苦),正如我所说,我的数学技能非常可怕,所以即使有人能指出我的方向关于这个问题的其他一些帖子,用一些外行的术语让我坐在那里,那就太好了。

【问题讨论】:

  • 如果您只需要生成坐标的随机值,请查看标准库的 <random> 标头。
  • 不会像在链接到的示例中那样单独生成 x 和 y 值会为更靠近中心的点创建偏差吗?
  • 为什么不直接将this 的答案移植到 C++ 中呢?作者已经给出了生成统一点的解决方案。
  • 正如我所提到的,我正在寻找正态分布,而不是均匀分布。
  • 使用std::normal_distribution而不是均匀分布,平方根解决方案将消除现有的偏向中心。

标签: c++ boost random normal-distribution


【解决方案1】:

从问题陈述来看,我会直观地使用 X 和 Y 的正态分布。

但由于评论线程似乎表明这不是预期的 - 让我猜一下 的意图:

也许您正在寻找一个与中心有距离的点形成正态分布。

在这种情况下,以向量形式查看问题:

  • 对距离分布使用单一正态分布
  • 使用均匀分布选择角度 [0, 360) 度

现在是从中心+向量计算目标点的百变三角法

【讨论】:

  • 您提出的解决方案的问题是,据我了解,您正在对工作的中心点产生重大偏见,正如我在问题中链接的帖子中所发生的那样使用均匀分布时。
  • 你怎么看这个?您正在检查什么指标的分布?这确实是问题的一个问题。
猜你喜欢
  • 1970-01-01
  • 2021-02-03
  • 2016-08-11
  • 2016-02-16
  • 2019-02-21
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多