2011-07-12 18 views
2

は、2次元表面上にランダムな点を生成したいと考えています。はx0、y0座標に分布しています。Boost :: randomを使用した標準多変量正規乱数ベクトル

私が生成する必要があるのは "標準多変量正規ランダムベクトル"と呼ばれていますが、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版を取得するために本当にしなければならないのは、2つの乱数を生成してx0, y0座標に追加することだけです。

+4

実際、n次元の正規分布は、各成分において正常です。密度関数を書くと、1D密度関数があれば積として考慮されます。また、C++ 0xの ''を使用してください;-) –

関連する問題