使用 Boost::random 的标准多元正态随机向量

发布于 2024-11-19 19:31:27 字数 307 浏览 2 评论 0原文

我想在 2D 表面上生成随机点,分布在 x0, y0 坐标周围。

我知道我需要生成的称为“标准多元正态随机向量”,但我不知道如何在 C++ 中执行此操作,例如使用 Boost::random 库。

我知道有一种生成此算法的算法,称为 Box–Muller 变换 但我认为这一定已经在 Boost 中正确实现了。

有没有使用 Boost::random 生成多元正态分布的简单方法?

I would like to generate random points on a 2D surface, distributed around a x0, y0 coordinate.

I understand that what I need to generate is called "standard multivariate normal random vector", but I don't know how to do it in C++, for example using the Boost::random library.

I know there is an algorith for generating this, called Box–Muller transform but I would think that this must have already been implemented properly in Boost.

Is there any simple way to generate multivariate normal distribution, using Boost::random?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冬天旳寂寞 2024-11-26 19:31:27

似乎是

// deterministic Box-Muller method, uses trigonometric functions
template<class RealType = double>
class normal_distribution
{

但 Box-Muller 不是t 2D。要获得 2D 版本,您真正需要做的就是获取生成的两个随机数并将它们添加到 x0, y0 坐标。

It seems to be:

// deterministic Box-Muller method, uses trigonometric functions
template<class RealType = double>
class normal_distribution
{

But Box-Muller isn't 2D. All you really have to do to get the 2D version is to take the two random numbers generated and add them to the x0, y0 coordinates.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文