Я написал симулятор Блэкджека. Цель состояла в том, чтобы оценить вероятность дилера по сравнению с бюстом. Обратите внимание, что дилер должен рисовать, когда он равен 16, и должен стоять на 17. Если в руке дилера есть туз, его следует считать равным 11, когда итоговое значение составляет от 17 до 21 включительно; в противном случае туз должен быть засчитан как 1. Программа, похоже, работает, но я не знаю сотни. Вот ядро программы. Можете ли вы проверить, является ли код ошибочным, пожалуйста?Симулятор блэкджека (для проверки)
def simNGames(n):
holds = busts = 0
for i in range(n):
score = simOneGame()
if score <= 21:
holds += 1
else:
busts += 1
return holds, busts
def simOneGame():
score = 0
cardsVal = [2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11]
while not gameOver(score):
dealerScore = choice(cardsVal)
# in case dealer hits an ace
if dealerScore == 11:
if score >= 6 and score <= 10:
score += 11
else:
score += 1
else:
score += dealerScore
return score
def gameOver(score):
return score >= 17 and score <= 21 or score >=22
Если вы симулируете множество игр подряд, вы должны принять во внимание тот факт, что колоды истощаются из-за определенных карт, которые делает дилер (у торговца меньше шансов набрать ту же карточку). Если вы имитируете небольшое количество игр, этот эффект можно в значительной степени игнорировать, так как блэкджек обычно играет со многими колодами. – Celada