マーチンゲール法はギャンブルの必勝法かという記事で、ギャンブルの必勝法の一つと言われるマーチンゲール法の解説があります。なかなか面白そうだったので、Perl で簡単なシミューレーションを書いてみました。
#!/usr/bin/perl
use strict;
strategy1 ();
;### マーチンゲール法
sub strategy1 {
package strategy1;
sub init_bet {
return 1;
}
sub hit {
my $this_bet = shift;
return init_bet ();
}
sub lose {
my $this_bet = shift;
return $this_bet * 2;
}
&main::start (100, &init_bet, &hit, &lose);
}
;# 賭博ループ
package main;
sub start {
my ($property, $init_bet, $hit, $lose) = @_;
;#
my $bet = &$init_bet;
my $count = 1;
do {
$property -= $bet;
printf "%4d 回目 : 掛金 = %d, 残金 = %d, 結果 = ", $count, $bet, $property;
if (doDice ()) {
printf "○";
$property += $bet * 2;
$bet = &$hit ($bet);
}
else {
printf "×";
$bet = &$lose ($bet);
}
printf ", 資産 = %d
", $property;
$count++;
} while (0 <= $property - $bet);
print "はさーん";
}
;# それぞれ50%の確率で 0=丁 1=半 を返す
sub doDice {
int (rand (2));
}
Wikipedia のベッティングシステムの項を見ると、マーチンゲール以外にもたくさんの必勝法があるようです。上記プログラムを改造し、これら必勝法についてもシミュレーションを実装しておいたので参考にどうぞ(ダウンロードはこちら)
何れの必勝法でも、手持ち金の増減の変化が違うだけで、何れの場合でも負ける時は負けてしまいます。そういう意味では、『必勝』ではないわけですね。特にマーチンゲール法の場合、稼ぎを出すのは地道に勝ち続けなければなりませんが、負けが込むと一気に破産してしまいます。 『必勝法』という名前に惑わされて、賭け事で人生を狂わせるなんてことのありませんように…合掌