最終更新:
himazin55th 2011年04月26日(火) 21:18:53履歴
編注:終わってみるとしょうもない記事でした。よまんでいいよw
お金の入った封筒が2つあり、金額は分からないが一つの封筒には他方の倍のお金が入っている。 選んだ封筒の中に入っている金額が貰える。 あなたが,一つ選んだところ一億円が入ってた. ここで「あなたが望むなら,もう一つの封筒と替えても良い」と言われる. 封筒を変えるべきか?
import java.*; public class boxMoney { public static void main(String[] args) { int n=1000000; //回数 int M=1000; //金額上限の半分 int[][] box= new int[n][2]; //はじめに選ぶのがbox[][0] 変えるなら box[][1] int i,j=0; double avarage0=0; //NoChange double avarage1=0; // Change for(i=0;i<n;i++){ double m=Math.random()*M; if(Math.random()<0.5){//boxの中身設定 box[i][0]=(int)m; box[i][1]=(int)(m*2); }else{ box[i][1]=(int)m; box[i][0]=(int)(m*2); } avarage0+=box[i][0]; avarage1+=box[i][1]; } avarage0/=n; avarage1/=n; System.out.println(avarage0); System.out.println(avarage1); } }
if(Math.random()<0.5){//boxの中身設定 box[i][0]=M; box[i][1]=box[i][0]*2; }else{ box[i][0]=M; box[i][1]=M/2; }ここだけ変える。
変えると1.25倍程度になる。
まぁこれも当たり前ですよね。
問題があるとすれば、本当にシミュ2の2MとM/2の確率は半々なのか、ということ。
という訳で、シミュ1(完全ランダム)の中から条件合致なものだけ取り出すシミュ3を行う。
まぁこれも当たり前ですよね。
問題があるとすれば、本当にシミュ2の2MとM/2の確率は半々なのか、ということ。
という訳で、シミュ1(完全ランダム)の中から条件合致なものだけ取り出すシミュ3を行う。
if(box[i][0]==100){ avarage0+=box[i][0]; avarage1+=box[i][1]; j++; } } avarage0/=j; avarage1/=j;シミュ1からここだけ変える。適当に100円の時を抜き出す。
↑box[i][0]が100な時、box[i][1]は50-50.5 200-202.
50-50.5の確率:200-202の確率=乱数が50-50.5:乱数が100-101 =1:2
なので、期待値は (50+200*2)/3 =150 となる。
なんのシミュにもなってない。
よって↓からの考察に何の意味もないw
50-50.5の確率:200-202の確率=乱数が50-50.5:乱数が100-101 =1:2
なので、期待値は (50+200*2)/3 =150 となる。
なんのシミュにもなってない。
よって↓からの考察に何の意味もないw
観測によりシミュ1からシミュ2に移ったと考えて良いんじゃないか。
完全ランダムから、片側固定となったというか。ということで、「変えるべき」で。
「対称性からどっちでも変わらないだろ。『どっち選んでも変えるべき』っておかしくね?」と思ってたけど、「見た封筒」「見てない封筒」で対称性が崩れる、みたいな話なのかな。
完全ランダムから、片側固定となったというか。ということで、「変えるべき」で。
「対称性からどっちでも変わらないだろ。『どっち選んでも変えるべき』っておかしくね?」と思ってたけど、「見た封筒」「見てない封筒」で対称性が崩れる、みたいな話なのかな。
このページへのコメント
こういうの追加していきたい