ランダムに3点とって鋭角三角形となる確率をJulia で考える。(その3)
はじめに
いろいろとこの確率を調べていくと,
連続一様分布
で定義します。このとき,
ここで,
であるとします。
なので,
なので,
と定めると,
となります。これは,正方形や円の内部にランダムに点をとって考えた時の点の分布となります。
1x1の正方形の内部に点をとる(連続一様分布)
n=1000000
k=0
for i=1:n
a1=rand(2)
a2=rand(2)
a3=rand(2)
x1=a2-a1
x2=a3-a1
t1=(x1[1]*x2[1]+x1[2]*x2[2])/(sqrt(x1[1]^2+x1[2]^2)*sqrt(x2[1]^2+x2[2]^2))
x1=a1-a2
x2=a3-a2
t2=(x1[1]*x2[1]+x1[2]*x2[2])/(sqrt(x1[1]^2+x1[2]^2)*sqrt(x2[1]^2+x2[2]^2))
x1=a1-a3
x2=a2-a3
t3=(x1[1]*x2[1]+x1[2]*x2[2])/(sqrt(x1[1]^2+x1[2]^2)*sqrt(x2[1]^2+x2[2]^2))
if t1>0.0000001 && t2>0.0000001 && t3>0.0000001
k+=1
end
end
println(k,",",n,",",k/n)
274718,1000000,0.274718
鋭角三角形となるのは約27%でした。
これが,適しているかどうかは,冒頭に述べた,『私たちがどれを採用するか?現実とマッチしそうなものは?』 にかかってきます。上の定義は限定されているようにも思えますが,
まず,私たちの持っている,「ランダム」の感覚はこの「連続一様分布」に近いと考えられます。この時,確率を考えるには遠いところをカットします。あとはこの考え方を採用するかどうかです。
『遠いところをカットしない』ようにするにはどうしたらいいでしょうか?1つの答えは 『標準正規分布』 です。
標準正規分布
確率密度関数
で定義されたものです。標準正規分布 といいます。
となります。
この分布に対する乱数は標準正規乱数と呼ばれ,randn()
で求まります。これを利用すると,平面上に標準正規乱数を用いて点をとることができます。
using Plots
function randunitdisk()
y, x = randn(),randn()
end
randunitdisk(n) = [randunitdisk() for _ in 1:n]
scatter(randunitdisk(2^12); legend=false, msw=0, ms=3, alpha=0.5, size=(500, 500))
中心に寄っていることが分かります。
n=1000000
k=0
for i=1:n
a1=randn(2)
a2=randn(2)
a3=randn(2)
x1=a2-a1
x2=a3-a1
t1=(x1[1]*x2[1]+x1[2]*x2[2])/(sqrt(x1[1]^2+x1[2]^2)*sqrt(x2[1]^2+x2[2]^2))
x1=a1-a2
x2=a3-a2
t2=(x1[1]*x2[1]+x1[2]*x2[2])/(sqrt(x1[1]^2+x1[2]^2)*sqrt(x2[1]^2+x2[2]^2))
x1=a1-a3
x2=a2-a3
t3=(x1[1]*x2[1]+x1[2]*x2[2])/(sqrt(x1[1]^2+x1[2]^2)*sqrt(x2[1]^2+x2[2]^2))
if t1>0.0000001 && t2>0.0000001 && t3>0.0000001
k+=1
end
end
println("標準正規乱数での確率は",k/n)
標準正規乱数での確率は0.250036
これは
やはり,標準正規分布に従うようなモデル(中心の方が確率が高く,遠くにいくと確率が低くなる)であれば,
まとめ
このように,確率を考えるときにはどのような確率分布で考えるかが大切になってきます。そして,どの分布を採用するかは,私たちが考えなくてはなりません。
このページを見ると,t分布やβ分布など様々な分布があることが分かります。どの分布にするのかは私たちの判断です。
今回,『平面上に3点をとって鋭角三角形を作る確率』を考えましたが,『私たちがどの確率分布を採用するか?現実とマッチしそうなものは?』の2つを整理して話すのが良さそうです。
Discussion