【发布时间】: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