私は、次元のpノルムボールから来る均一に分布したノイズを生成する関数を書こうとしています:
円()(http://mathworld.wolfram.com/DiskPointPicking.html)の可能な解決策を見つけましたが、異なる値に対してこれを拡張するのに問題があります。
私は、一様な分布からランダムなサンプルを描画し、それが指定された制約を満たさない場合に再描画することでそれを試みました。しかし、醜い解決策であることに加えて、高次元では計算的に実行不可能になります。
私は、次元のpノルムボールから来る均一に分布したノイズを生成する関数を書こうとしています:
円()(http://mathworld.wolfram.com/DiskPointPicking.html)の可能な解決策を見つけましたが、異なる値に対してこれを拡張するのに問題があります。
私は、一様な分布からランダムなサンプルを描画し、それが指定された制約を満たさない場合に再描画することでそれを試みました。しかし、醜い解決策であることに加えて、高次元では計算的に実行不可能になります。
回答:
kjetil b halvorsen(https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=758215)によって提案されたように、私は論文で完全な解決策を見つけました。正直なところ、その背後にある数学を理解するのに苦労していますが、最終的なアルゴリズムはかなり単純です。我々が持っている場合寸法、半径R及びノルムPより:
1)を生成するの独立したランダム実数スカラーはε iは = ˉ G(1 / P 、P )、ˉ G(μ 、σ 2)指数で異なるパワーを有する一般化ガウス分布である(E - | X | P代わりにちょうどp = 2の)
2)ベクター構築物成分のS Iを * ε Iここで、sはiは独立ランダム符号であります
3)を生成します。ここで、wは区間[0、1]に一様に分布する確率変数です。
4)y = r z xを返す
Taekeは、2ノルムと1ノルムのケースを具体的に説明することで、以下のテキストがより直感的になる記事へのリンクを提供しています。
この結果を使用できますhttp://mathworld.wolfram.com/HyperspherePointPicking.html
完了するには、距離をサンプリングするだけでよく、球の均一分布をボールの均一分布に変更できます。(これは、ディスクポイントピッキングのリンクされた例とほぼ同じです)
正式な証明はなく、直感のみ
しかし、シミュレーションによるテストは良さそうです。
library(rmutil)
x <- abs(rlaplace(20000))
y <- abs(rlaplace(20000))
z <- abs(rlaplace(20000))
rn <- abs(x)+abs(y)+abs(z)
xi <- (x/rn)
yi <- (y/rn)
zi <- (z/rn)
plot(sqrt(0.5)*(xi-yi),
sqrt((0.5-0.5*(xi+yi))^2+zi^2),
pc=21,bg=rgb(0,0,0,0.02), col=rgb(0,0,0,0),cex=1)