2012年3月24日土曜日

変な確率?

円周上の二点を任意に選んだときの,その二点間の距離の期待値は?

とかいう問題を一年の後期にやったことを統計力学を勉強していたら思い出した.(たしか理系への数学かなんかに載っていた.)あのときはちょうど電磁気学の基礎を読んでいて,積分の考え方を勉強していたなあ.それでこの問題にその知識が使えて,お!確率にまででてくるんだ!とうれしくなったなぁ.ちょうどCプロもその時期に習っていて,そこでrand関数を習ったもんだから自分でプログラム組んでみて,実験したなぁ.そのプログラミングがまだ残ってた.

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
#include<math.h>
struct Vec2
{
 double x;
 double y;
};
int main(void)
{
 int i,j;
 double r=1,l[1000],E,sum=0;
 Vec2 v1;
 Vec2 v2;
 v1.x=r;
 v1.y=0;
 for(i=0;i<10000;i++)
 {
  double a=((double)rand()/(RAND_MAX+1))*2*3.14159265358979;
  v2.x=r*cos(a);
  v2.y=r*sin(a);
  l[i]=sqrt((v1.x-v2.x)*(v1.x-v2.x)+(v1.y-v2.y)*(v1.y-v2.y));
 }
 for(j=0;j<1000;j++)
 {
  sum=sum+l[j];
 }


 E=sum/1000;
 printf("期待値:%lf\n",E);
 return 0;
}

たしかこれ作って実際やったら有効数字2桁いかなくてがっかりしたんだよね.


一点を固定して考える.(対称性から一点を中心に考えてもよい.)
もう一つの点は,基本状態としてθを選ぶと,r(cosθ,sinθ)と表される.物理量d(θ)=二点の距離とする.
Δθの範囲に点がくる確率は


であるので確率密度は1/2π
求める期待値は

0 件のコメント:

コメントを投稿