コインいっこなげる

コインを投げて表が出たら掛け金が2倍!でも裏が出たら没収ね!っていうギャンブルがあったとして、貴方は乗っかるべきか。
もちろん乗っかるべきではない。1/2の確率で0になるわけだから。これは±100%の例だけど、じゃあ±1%の場合はどうだろうか。実はこれも乗っかるべきではない。
指数関数のグラフを思い浮かべてもらえばわかることなんだけど、x軸を右に進む距離と左に進む距離が違うわけです。左の方が長くなっているので何度も繰り返すとお金が無くなります。このトリックには気づかない人が多いようです。

このインチキ性を直感的に理解できるようにサンプルコードをおいておきます。

#!/usr/bin/perl

$a = 1;

while (1) {
  for ($i=0; $i<10; $i++) {
    if (int(rand(2))==1) {
      $a *= 1.01;
    }
    else {
      $a *= 0.99;
    }
  }
  printf("%f\n", $a);
}

で、こっちはインチキじゃない方。

#!/usr/bin/perl

$a = 1;

while (1) {
  for ($i=0; $i<10; $i++) {
    if (int(rand(2))==1) {
      $a *= 1.01;
    }
    else {
      $a /= 1.01;
    }
  }
  printf("%f\n", $a);
}

わかりますか?

・・・とか書いた後で、じゃあその金はどこから来るんだよってことで暫し考えたら全然インチキじゃなかった。笑い

#!/usr/bin/perl

$b = 0;

for ($ii=0; $ii<100; $ii++) {
  $a = 1;
  for ($i=0; $i<10000; $i++) {
    if (int(rand(2))==1) {
      $a *= 1.01;
    }
    else {
      $a *= 0.99;
    }
  }
  printf("%f\n", $a);

  $b = $b + $a;
}

printf("%f\n",$b/100);

コイン1万回投げるゲームを100回やったときの平均成績を出すものですが、ちゃんと1くらいになります。いやはや。