私はブラックジャック・シミュレーターを作って、特定のハンドが勝利する確率を見極めることができます。私は4枚のカードが残っているまで、52枚のカードの1つのフルデッキを循環させるwhileループを持っています。その中で私はディーラーが彼のカウントが本当のブラックジャックのように17+であるまで描画するwhileループを持っています。コードを実行すると、1つのデッキに正常に実行されますが、毎回同じハンドしか印刷されません。ここでは、コードです:ブラックジャックループ・トゥルー
# <--- PROGRAM SETUP --->
import random
# Drawing Card Function
def draw_card():
# Card Values in 1 Deck
vals = [2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,
8,8,8,8,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,
10,10,10,10,10,10,10,10,10,11,11,11,11]
# </--->
dealer = 0
player = 0
bust = 21
deck_count = 0
hand_count = 0
dealer_cards = []
# <--- // --->
cards = 52
# Loop Hands Through Deck
while(cards > 4):
# Draw Card Loop
while(dealer <= 16):
card = random.choice(vals)
vals.remove(card)
dealer_cards.append(card)
dealer = dealer + card
hand_count = hand_count + 1
cards = cards - len(dealer_cards)
# <--- Results --->
if 17 <= dealer <= 21:
print "Hand: {}, Dealer Stands @ {}".format(hand_count, dealer)
for i in dealer_cards:
print "Card: {}".format(i)
else:
print "Hand: {}, Dealer Busts @ {}".format(hand_count, dealer)
for i in dealer_cards:
print "Card: {}".format(i)
else:
deck_count = deck_count + 1
print "Deck {} is finished!".format(deck_count)
# <--- // --->
draw_card()
これを実行しているときに私が得る:
Hand: 1, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 2, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 3, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 4, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 5, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 6, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 7, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 8, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 9, Dealer Stands @ 19
Card: 10
Card: 9
Hand: 10, Dealer Stands @ 19
...All the way till the deck has less than 4 cards left.
は、私はそれぞれの手ではなく、最初に手を複数回印刷するユニークなドローことにするために何を修正できますか?ありがとう
場合> 16' 'ディーラーと'カード> 4'、ループが延々と続きます。あなたの不変量を考え直してください。 – 9000