マーチンゲール法はギャンブルの必勝法かという記事で、ギャンブルの必勝法の一つと言われるマーチンゲール法の解説があります。なかなか面白そうだったので、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 のベッティングシステムの項を見ると、マーチンゲール以外にもたくさんの必勝法があるようです。上記プログラムを改造し、これら必勝法についてもシミュレーションを実装しておいたので参考にどうぞ(ダウンロードはこちら)
何れの必勝法でも、手持ち金の増減の変化が違うだけで、何れの場合でも負ける時は負けてしまいます。そういう意味では、『必勝』ではないわけですね。特にマーチンゲール法の場合、稼ぎを出すのは地道に勝ち続けなければなりませんが、負けが込むと一気に破産してしまいます。 『必勝法』という名前に惑わされて、賭け事で人生を狂わせるなんてことのありませんように…合掌