стандартный многомерный нормальный случайный вектор с использованием Boost :: random - PullRequest
2 голосов
/ 12 июля 2011

Я хотел бы генерировать случайные точки на 2D-поверхности, , распределенные вокруг координат x0, y0.

Я понимаю, что то, что мне нужно сгенерировать, называется " стандартный многомерный нормальный случайный вектор ", но я не знаю, как это сделать в C ++, например, используя библиотеку Boost :: random.

Я знаю, что есть алгоритм для генерации этого, называемый преобразованием Бокса-Мюллера , но я думаю, что это должно быть правильно реализовано в Boost.

Есть ли простой способ генерирования многомерного нормального распределения, используя Boost :: random?

1 Ответ

3 голосов
/ 12 июля 2011

Кажется, :

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

Но Бокс-Мюллер не 2D. Все, что вам действительно нужно сделать, чтобы получить 2D версию, это взять два сгенерированных случайных числа и добавить их к x0, y0 координатам.

...