連休明けまでに書けばいいやと思っていた講義用のシミュレータが、2時間後の実験に必要であることが判明して、30分で書く。
import random
deck = range(2,10)
deck += [10] * 4
deck += [11]
deck *= 4
result = { j:{i:0 for i in range(17,23)} for j in range(2,12) }
print("Deck check")
print(deck)
for c in range(1000):
random.shuffle(deck)
hand = deck[-1]
if deck[-1] == 11:
hasa = 1
else:
hasa = 0
for draw in deck:
hand = hand + draw
if draw == 11:
hasa += 1
if hand > 21 and hasa > 0:
hand = hand - 10
hasa -= 1
if hand >= 17:
break
if hand>21:
hand = 22
result[deck[-1]][hand] += 1
print("Simulation Result")
for k, r in result.iteritems():
print("%d : %s" % (k, r) )
実行結果
Simulation Result
2 : {17: 7, 18: 8, 19: 6, 20: 13, 21: 8, 22: 34}
3 : {17: 10, 18: 11, 19: 19, 20: 6, 21: 13, 22: 31}
4 : {17: 13, 18: 11, 19: 6, 20: 10, 21: 7, 22: 33}
5 : {17: 15, 18: 10, 19: 13, 20: 9, 21: 3, 22: 31}
6 : {17: 22, 18: 8, 19: 14, 20: 6, 21: 5, 22: 30}
7 : {17: 27, 18: 10, 19: 3, 20: 5, 21: 6, 22: 19}
8 : {17: 5, 18: 41, 19: 13, 20: 12, 21: 7, 22: 17}
9 : {17: 0, 18: 0, 19: 0, 20: 0, 21: 0, 22: 0}
10 : {17: 56, 18: 41, 19: 13, 20: 129, 21: 48, 22: 71}
11 : {17: 12, 18: 10, 19: 7, 20: 6, 21: 23, 22: 7}