Old Maid(ババ抜き)にて、最初に何枚の状態になることが多いのか、ということが気になった。
それをシミュレーションする。
4人でプレイしていることを想定する。
何枚残るのか、ということを10000000回して、ヒストグラムにする。
import random
def Mine():
trump = [i%13+1 for i in range(52)] + [14]
#Prepare all trump cards except 1 joker
#Joker is 14
my_card = random.sample(trump, 13)
my_card.sort()
my_card = my_card + [0]*5
temp = my_card[0] #最初に1枚目を見る
now_num = 1 #二枚目を考える
my_num = 13
while now_num < 13: #14枚目は無いので、それを考えたらダメ
if temp == my_card[now_num]: #さっき見たものと、今が同じ
my_num -= 2 #discard 2 trump
temp = my_card[now_num+1] #次のカードを覚える
now_num += 2 #さらに次のカードを考えに行く
else:
temp = my_card[now_num] #不揃いなら今のカードを覚える
now_num += 1 #次のカードを考えに行く
return my_num
def Old_maid(T):
data = []
for i in range(T):
data.append(Mine())
return data
import numpy as np
import matplotlib.pyplot as plt
x = np.array(Old_maid(1000000))
plt.hist(x, bins = max(x)- min(x)+1, color = "orange")
plt.title("Old Maid")
plt.show()
print(np.average(x), np.std(x))
平均は6.45、標準偏差は1.81であった。最大値は13だが、全然見えない。
ヒストグラムを見るに、どれぐらい、3枚というのが珍しいのかがわかる。
人数を変えていくとどうなるか、ということも気になる。それはまた別の機会としよう。
バイバイ!