ランダムに抽出した5枚のトランプのタイプを検査する
3888 ワード
ランダムにトランプを5枚抽出し、得られるタイプは以下の通りです.
pair/two pair /three of a kind/four of a kind/flush/straight/straight flush/high card
具体的な定義はウィキペディアを参照https://en.wikipedia.org/wiki/Poker_probability
このプログラムの目的は、5枚のカードを受け取り、以上のどのタイプに属するかを識別することです.
このタイプに属していることを確認すると、対応する文が印刷されtrueが返されます.そうでなければfalseを返します.
ランダムに大量の5枚の1組のトランプを生成し、このプログラムを適用してその出現頻度が理論確率値に近いかどうかを検証することができる.理論確率値の詳細はhttps://en.wikipedia.org/wiki/Poker_probability
pair/two pair /three of a kind/four of a kind/flush/straight/straight flush/high card
具体的な定義はウィキペディアを参照https://en.wikipedia.org/wiki/Poker_probability
このプログラムの目的は、5枚のカードを受け取り、以上のどのタイプに属するかを識別することです.
このタイプに属していることを確認すると、対応する文が印刷されtrueが返されます.そうでなければfalseを返します.
ランダムに大量の5枚の1組のトランプを生成し、このプログラムを適用してその出現頻度が理論確率値に近いかどうかを検証することができる.理論確率値の詳細はhttps://en.wikipedia.org/wiki/Poker_probability
def get_value_from_hands(hands):
values = []
for i in range(0,5):
values.append(hands[i]['value'])
return values
def get_suits_from_hands(hands):
suits = []
for i in range(0,5):
suits.append(hands[i]['suit'])
return suits
def appear_time_from_hands(hands):
values = get_value_from_hands(hands)
times = [0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0]
for j in range(0,5):
for i in range(2,15):
if values[j] == i:
times[i-2] += 1
else:
i += 1
return times
def common_value_from_hands(hands):
times = appear_time_from_hands(hands)
appear_time =[]
for time in times:
if time != 0:
appear_time.append(time)
return appear_time
def is_flush(hands):
suits = get_suits_from_hands(hands)
if suits[0] == suits[1] == suits[2] == suits[3] == suits[4]:
print('Hand contains flush')
return True
else:
return False
def is_high_card(hands):
if is_straight(hands):
return False
else:
if is_flush(hands):
return False
else:
times = common_value_from_hands(hands)
if len(times) == 5:
print('Hand contains high card')
return True
else:
return False
def is_pair(hands):
times = common_value_from_hands(hands)
if len(times) == 4:
if 2 in times:
print('Hand contains one pair')
return True
else:
return False
def is_2_pair(hands):
times = common_value_from_hands(hands)
if len(times) == 3:
for i in range(0,3):
if 2 in times :
print('Hand contains 2 pair')
return True
else:
i += 1
else:
return False
else:
return False
def is_3_of_a_kind(hands):
times = common_value_from_hands(hands)
if 3 in times:
print('Hand contains 3 of a kind')
return True
else:
return False
def is_4_of_a_kind(hands):
times = common_value_from_hands(hands)
if len(times) == 2:
for i in range(0, 3):
if 4 in times:
print('Hand contains 4 of a kind')
return True
else:
i += 1
else:
return False
else:
return False
def is_full_house(hands):
times = common_value_from_hands(hands)
if len(times) == 2:
if 3 in times and 2 in times:
print('Hand contains full house')
return True
else:
return False
else:
return False
def is_straight(hands):
times = common_value_from_hands(hands)
if len(times) == 5:
numbers = sorted(get_value_from_hands(hands))
if numbers[0] + 4 == numbers[4]:
print('Hand contains straight')
return True
else:
return False
else:
return False
def is_straight_flush(hands):
if is_straight(hands):
suits = get_suits_from_hands(hands)
if suits[0] == suits[1] == suits[2]== suits[3]== suits[4]:
print('Hand contains straight flush')
return True
else:
return False
else:
return False