当該ページで倍増法を必勝法みたいにいっているけど、ほんとうなのかなぁ。
単純に考えて
- ゲームのルールを決めることができるハウスがゲストの必勝法(ハウスにとって必敗法)があるゲームを採用するはずがない。
- クラップスというゲーム自体、長いこと、存在する。
- ということは必勝法が存在しない、すくなくとも今だ、見つけられていない。
ということになるんじゃないか。
いちおう自分でもモンテカルロしてみる。
(defun dice() | |
(+ (random 6) 1)) | |
(defun craps() | |
"負け:-1 勝ち:1" | |
(let ((sum (+ (dice)(dice)))) | |
(labels ((retry (x) | |
(let ((w (+ (dice)(dice)))) | |
(cond ((= x w) 1) | |
((= w 7) -1) | |
(t (retry x)))))) | |
(case sum | |
(2 -1) | |
(3 -1) | |
(4 (retry sum)) | |
(5 (retry sum)) | |
(6 (retry sum)) | |
(7 1) | |
(8 (retry sum)) | |
(9 (retry sum)) | |
(10 (retry sum)) | |
(11 1) | |
(12 -1))))) | |
(defun game (&optional (x 1000)) | |
(loop repeat x | |
collect | |
(craps))) | |
(defun double(i) | |
(let* ((bet 100) | |
(result 0) | |
(wrk (loop for x in (game i) | |
collect | |
(prog1 | |
(setf result (+ result (* bet x))) | |
(if (= x 1) | |
(setf bet 100) | |
(setf bet (* bet 2))))))) | |
(UIOP/FILESYSTEM:DELETE-FILE-IF-EXISTS "/tmp/result") | |
(with-open-file (stream "/tmp/result" :direction :output :if-exists :overwrite :if-does-not-exist :create) | |
(loop for x in wrk | |
do | |
(format stream "~D~%" x))))) |
1000回試行

あれ?
なんか、いけそうに見える。
540回ぐらいの大きな負けを超えることができれば、あとは順調に勝ちが積み上がっていくような……。
10000回試行

100000回試行

1000000回試行

10000000回試行

——なんなんだ、これは。フラクタルかよ!
どこまでいっても大負けになる瞬間がある。10000000回試行では瞬間的に1200000000円——12億……。どんなに勝ちを積んでもフッ飛んでしまうことがあるのか。おそろしい。