1

単位ベクトルnが与えられると、別のランダムな単位ベクトルmをできるだけ早く生成する必要があります。nからのmの偏差は正のパラメータのオーダーである必要があり、単位球上のmの分布はnを中心に対称でなければなりません。sigma

単位ベクトルの表現に関して特に要件はないので、球角、デカルト座標、または便利であることが判明したものを使用できます。また、 mがnsigmaから大きく外れると減衰する限り、使用される確率分布に関する正確な要件はありません。

私はと働いていgslますC。デカルト座標を使用してやや複雑な方法を考え出しました。参考になれば後で投稿しますが、他の方のアイデアも見てみたいです。

4

2 に答える 2

2

各次元が均一に分布しているベクトル0は、より多くの値が角に集中する点の立方体になることはおそらくご存知でしょう 。しかし、各次元が正規分布しているベクトル0は、はるかに優れています。点の極角は単位球面上に均一に分布し、半径は原点付近に集中しています。パラメータに基づいて標準偏差を変更して、このようなベクトルを生成できますsigma。ベクトルを に追加しn、結果を正規化し、それを良いと呼びます。

これには、1 つの平方根と 3 つの正規分布乱数が必要です。ジグラット アルゴリズムを使用すると、正規分布する乱数をすばやく取得できます。より近似的なオプションは、均一に分布した 3 つ以上の乱数を合計することです。さらに別の可能性: 多くのランダム ベクトルのテーブルを事前に計算し、ランダム インデックスを使用してテーブル ルックアップを実行します。これらの方法はそれぞれ、計算とストレージのバランスが異なるため、すべてをコーディングして速度をテストする必要があります。

于 2012-09-11T14:49:43.227 に答える
1

単に球極座標を使用してみませんか。間隔 [0,2*pi) にわたる一様分布から方位角を生成し、減衰要件が満たされるように選択されたある種の指数関数的減衰分布に従って極角を生成します。次に、これらのランダムにサンプリングされた極角と方位角によって、元のnベクトルの角度変位としてmベクトルを生成できます。

于 2012-09-10T21:57:24.237 に答える