裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

3 次元空間の単位ベクトルを表す乱数(その2)

2014年08月06日 | ブログラミング

新しい記事「3 次元空間の単位ベクトルを表す乱数(その4)」を参照

昨日のピアソン問題では,極座標において角度をランダムに選択すると仮定した。そのようにすると,直交座標におけるベクトルの要素値は一様分布しないことになる。
そこで,直交座標で一様分布するように x, y, z を [-1, 1] の一様乱数から取り出し,ノルムが 1 になるように正規化するようにした。
プログラムは非常に簡単になった(オリジナルの作者のプログラムは VBA で書かれていたので判読が難しい)。
また,n 歩進んだ後の X, Y, Z 座標にも偏りはない(平均値は 0 に近い)。

PearsonProblem3 = function(n = 4, dR = 0.1, trial = 1e+05) {
    xyz = array(runif(3 * n * trial, min = -1, max = 1), dim = c(3, n, trial))
    xyz = apply(xyz, 2:3, function(xyz2) xyz2/sqrt(sum(xyz2^2)))
    apply(xyz, 3, function(xyz2) sqrt(sum(rowSums(xyz2)^2)))
}
ans = PearsonProblem3(n = 3, trial = 1e+06)
mean(ans)
hist(ans, nclass = 50)

結果は,下図のようになった。分布の形が違う(オリジナルの作者のものとも違う)。

このシミュレーションでは,平均値は 1.624884 であった。

コメント (1)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 3 次元空間の単位ベクトルを... | トップ | 3 次元空間の単位ベクトルを... »
最新の画像もっと見る

1 コメント

コメント日が  古い順  |   新しい順
Unknown (nakazawa)
2014-08-07 10:13:18
ランダムウォークとしては、角度をランダムの方が正しい気がしますが。
返信する

コメントを投稿

ブログラミング」カテゴリの最新記事