2011-07-12 47 views
2

我想在二維曲面上產生隨機點,分佈在x0,y0座標周圍。標準多變量正態隨機向量使用Boost :: random

我明白,我需要產生被稱爲「標準多元正態分佈隨機向量」,但我不知道如何使用升壓::隨機庫做到這一點在C++,例如。

我知道有一個算法產生這個,叫做Box–Muller transform但我認爲這必須已經在Boost中正確實現。

是否有任何簡單的方法來生成多元正態分佈,使用Boost :: random?

回答

3

It seems to be

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

但箱穆勒是不是2D。所有你需要做的2D版本是取兩個隨機數生成並將它們添加到x0, y0座標。

+4

實際上,n維正態分佈在其每個組件中都是正常的。寫出密度函數,你會發現它是一個一維密度函數的產品。另外,如果你有它,使用C++ 0x的'';-) –