賭事で負けないためのマーチンゲールアルゴリズム
大学時代になんか習ってた
とってもうさんくさい記事タイトル担ってしまいましたが、
大学の授業でなんか習ってたのを思い出して、
2週間前ぐらいにPHPで作ってたのを放置していたので公開。
主に二択でかけた金額が倍になる場合に成立するゲームで利用できる考え方でした。
Wikipedia
<?php
/*
* マーチンゲールアルゴリズム
* http://en.wikipedia.org/wiki/Martingale_(betting_system)
* 当たれば2倍, 外れれば賭けた分が没収される
* ルーレットの赤黒のみを当てるゲームが前提
*
* 最初は1を賭けて、負けたら次のゲームでは賭けた金額の2倍を賭ける
* 負けても賭ける金額を倍にしているため、
* 一度でも勝てば手元に賭けた金額が戻ってくるアルゴリズム
*/
$money = 10; // 手持ち金
$bet = 1; // 最初にかける金額
// とりあえず1000000回繰返
for ( $i = 0; $i <= 1000000 ; $i++ )
{
// rand 1 or 0
$random = rand(1, 100);
if ( 1 == $random % 2 ) // 勝った場合
{
// 賭けた倍の金額を受取って掛け金を1に戻す
$money = ($bet * 2) + $money;
$bet = 1;
}
else // 負けた場合
{
// 賭けた金額を引いて次回の掛け金を2倍にする
$money -= $bet;
$bet = $bet * 2;
}
// お金がマイナスになった場合終了
if ( $money <= 0 )
{
echo "{$i}: money->{$money} bet->{$bet} You Lose.\n";
exit;
}
echo "{$i}: money->{$money} bet->{$bet}\n";
}
// 1000000回繰り返せれば勝ち
echo "You Win\n";
$ php martingale.php
...
....
622: money->1707 bet->64
623: money->1643 bet->128
624: money->1515 bet->256
625: money->1259 bet->512
626: money->747 bet->1024
627: money->-277 bet->2048 You Lose.
-
前の記事
GO言語のチュートリアルを突き進む 2013.12.30
-
次の記事
OpenSSLにてファイルを暗号化する 2014.02.02