それで、私はJohnZelleによるPythonプログラミングの問題に取り組んできました。問題は、ブラックジャックのディーラーが17を超えるまでヒットしなければならないというルールを前提として、ブラックジャックのディーラーが破産する時間の割合を示す基本的なブラックジャックプログラムを設計することです。ディーラーはしばしば彼の最初のカードを明らかにします。
私が遭遇した問題は、ブラックジャックのテーブルと相互参照すると、プログラムがエースとテンを除くすべての値に対して適切なパーセンテージを与えるように見えることです。
from random import randrange
def main():
printIntro()
n = getInput()
busts = simBlackjack(n)
printSummary(n, busts)
def printIntro():
print "Hello, and welcome to Blackjack.py."
print "This program simulates the likelihood"
print "for a dealer to bust."
def getInput():
n = input("How many games do you wish to simulate: ")
return n
def simBlackjack(n):
busts = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
for b in range(10):
for i in range(n):
x = b + 1
if b == 0:
handAce = True
else: handAce = False
while x < 17:
add = randrange(1,14)
if add == 11:
add = 10
elif add == 12:
add = 10
elif add == 13:
add = 10
elif add == 1:
handAce = True
x = x + add
if handAce:
if x + 10 >= 17 and x + 10 <= 21:
x = x + 10
if x > 21:
busts[b] = busts[b] + 1
return busts
def printSummary(n, busts):
for b in range(10):
if b == 0:
print "When the initial card was Ace, the dealer busted %d times in %d games. (%0.1f%%)" % (busts[0], n, (busts[0]) / float(n) * 100)
else:
print "When the initial value was %d, the dealer busted %d times in %d games. (%0.1f%%)" % ((b + 1), busts[b], n, (busts[b]) / float(n) * 100)
if __name__ == "__main__": main()
n = 1,000,000の場合、それぞれ約11.5%と21.2%になります。これは、オンラインテーブルが大幅に保持している17%と23%とは異なります。誰かが私に問題が何であるかを教えてもらえますか?