For Fun: Blackjack Simulator

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Rabbit
    Recognized Expert MVP
    • Jan 2007
    • 12517

    For Fun: Blackjack Simulator

    Introduction
    Have you wondered what the house edge is given a particular rule set? Can you really beat the house by counting cards? How big is that advantage really? Is it really the best strategy to hit a hard 16 when the dealer is showing a 7? All these and more can be answered with this VBScript blackjack simulator. Plug in the rules you want to test, modify basic strategy, count values, indices, betting ramps, and more. See how they all affect the overall house edge!

    How To Use
    Most of the script parameters are in the constant definitions at the top of script after the comments. The rest are at the bottom in the Initialize subroutine. This is where the betting ramps, indices, basic strategy, and count values are defined.

    You can find a basic strategy calculator here: http://wizardofodds.com/games/blackj...gy/calculator/

    Performance Stats
    It takes about 10 minutes, give or take a minute, to simulate one million games of two-deck blackjack.

    Miscellaneous Info
    A negative advantage means that it favors the house and you lost money over the simulation. A standard rule set with no counting and perfect basic strategy play favors the house by about half a percent.

    The count that is simulated can flip that to about 1.6 percent in your favor. It's a very small advantage that results in very wide variance in any one session of play. What this means is at any one session, you can lose money. But over many games, you are up just a little bit. You can see this by running the script many times for a small number of simulations, say about 20 games of blackjack. The advantage reported will fluctuate back and forth between negative and positive. But run it for lots and lots of simulations and you see your true advantage play out.

    The key takeaway is don't expect counting to turn every session of blackjack into a winning one.

    CODE
    Code:
    ' real world blackjack simulation
    ' designed with KO variant (OK qfit.com) indexes in mind
    ' modify constants, basic strategy, betting ramps, indexes, and count values as needed
    ' default values are for 2 decks, KO variant count, no double after split, dealer hits soft 17, late surrender allowed
    '
    ' created on 10/31/2014
    ' version 1.0
    '
    ' possible additions:
    ' add ability to calculate true count for balanced count systems
    ' add basic strategy defaults based on rule sets
    ' add ability to choose counting strategy
    ' add count values based on counting strategy
    ' add betting ramp values based on counting strategy
    ' add indexes based on counting strategy
    ' add initial count and insurance count based on counting strategy
    ' modify penetration to use percentage
    ' add constant for turning on and off surrender
    ' add rate of error on count as a way to account for human errors or to disguise counting
    ' add rate of error on basic strategy as a way to account for human errors or to disguise counting
    ' add sessions: session max loss before stopping, session max win before stopping
    ' stop playing deck after count gets below a certain number
    ' test up and pull betting system, streak count
    ' add other players at table with choice to pick position
    '
    ' strategy key:
    ' S = stand
    ' RS = surrender, otherwise stand
    ' H = hit
    ' RH = surrender, otherwise hit
    ' DH = double, otherwise hit
    ' DS = double, otherwise stand
    ' P = split
    ' RP = surrender, otherwise split
    
    Option Explicit
    
    Const NumSims = 1000000
    Const NumDecks = 2
    Const Penetration = 70 ' Number of cards dealt after which the deck is shuffled
    Const InitialCount = -4 ' For KO variant count, initial count is (Number of Decks - 1) * -4
    Const BurnCards = 1 ' Number of cards burned before first hand is dealt
    Const InsuranceCount = 3 ' Set to high number if you never want to take insurance
    Const NumMaxSplits = 4 ' Max 4
    Const BJPayoutAmount = 1.5 ' Use 1.5 for 3:2 and 1.2 for 6:5
    Const AllowDoubleAfterSplit = False
    Const CanHitSplitAces = False
    Const CanResplitAces = False
    Const DealerHitSoft17 = True
    Const Auditing = False
    Const UseIndexes = True
    Const UseBettingRamp = True
    Const LetItRide = False ' Modify bet downwards only if last hand was a loss. Usually used as one method of camoflaging counting.
    Const UseFibonnaciBetting = False
    Const AuditFileLocation = "C:\IBM\results.txt"
    
    Dim StandardDeck(51, 1), Decks(), BettingRamp(3, 1), CountValues(10)
    Dim HardStrategy(21, 10), SoftStrategy(21, 10), SplitStrategy(10, 10), Indexes(8, 4)
    Dim runningCount, deckPosition, simCount, bankRoll, betSize, wagers
    Dim handCards(4, 9), handData(4, 3), numHands, i, strDecision, lastHandWon, lastBet
    Dim lowBankRoll, highBankRoll, numHandsPlayed, j, startTime, endTime
    Dim f, x, s
    
    If Auditing Then Set f = CreateObject("Scripting.FileSystemObject").CreateTextFile(AuditFileLocation)
    
    ' Indexes:
    ' 0 = runningCount value
    ' 1 = hand value
    ' 2 = dealer face up card
    ' 3 = new strategy
    
    ' BettingRamp:
    ' 0 = runningCount value
    ' 1 = betSize at value
    
    ' handData:
    ' 0 = amount bet
    ' 1 = hand value
    ' 2 = soft hand indicator
    ' 3 = number of cards
    
    Initialize()
    InitializeDecks(NumDecks)
    
    For simCount = 1 To NumSims
    	ShuffleDecks()
    	
    	If Auditing Then 
    		f.WriteLine "Shuffle " & simCount
    		For x = 0 To UBound(Decks)
    			f.WriteLine Decks(x, 0) & Decks(x, 1)
    		Next
    		f.WriteLine ""
    	End If
    	
    	runningCount = InitialCount
    	deckPosition = BurnCards
    	betSize = 1
    	
    	Do Until deckPosition > Penetration
    		Erase handCards
    		Erase handData
    		numHands = 1
    		
    		betSize = 1
    		If UseBettingRamp Then
    			For i = 0 To UBound(BettingRamp)
    				If runningCount >= BettingRamp(i, 0) Then
    					betSize = BettingRamp(i, 1)
    				End If
    			Next
    		End If
    		
    		If LetItRide Then
    			If lastHandWon = True And lastBet > betSize Then
    				betSize = lastBet
    			End If
    			lastBet = betSize
    			lastHandWon = False
    		End If
    		
    		If Auditing Then f.WriteLine "New Hand, Count = " & runningCount & ", Bet = " & betSize & ", Bankroll = " & bankRoll
    		
    		handData(1, 0) = betSize
    		handData(1, 3) = 2
    		handData(0, 3) = 2
    		
    		' Player's first card
    		handCards(1, 0) = deckPosition
    		If Decks(deckPosition, 0) = 1 Then 
    			handData(1, 1) = 11
    			handData(1, 2) = 1
    		Else
    			handData(1, 1) = Decks(deckPosition, 0)
    		End If
    		runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    		deckPosition = deckPosition + 1
    		
    		' Dealer's first card
    		handCards(0, 0) = deckPosition
    		If Decks(deckPosition, 0) = 1 Then 
    			handData(0, 1) = 11
    			handData(0, 2) = 1
    		Else
    			handData(0, 1) = Decks(deckPosition, 0)
    		End If
    		deckPosition = deckPosition + 1
    		
    		' Player's second card
    		handCards(1, 1) = deckPosition
    		If Decks(deckPosition, 0) = 1 And handData(1, 1) + 11 <= 21 Then 
    			handData(1, 1) = handData(1, 1) + 11
    			handData(1, 2) = 1
    		Else
    			handData(1, 1) = handData(1, 1) + Decks(deckPosition, 0)
    		End If
    		runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    		deckPosition = deckPosition + 1
    		
    		' Dealer's second card
    		handCards(0, 1) = deckPosition
    		If Decks(deckPosition, 0) = 1 And handData(0, 1) + 11 <= 21 Then 
    			handData(0, 1) = handData(0, 1) + 11
    			handData(0, 2) = 1
    		Else
    			handData(0, 1) = handData(0, 1) + Decks(deckPosition, 0)
    		End If
    		runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    		deckPosition = deckPosition + 1
    		
    		If Auditing Then 
    			f.WriteLine "Dealer Face Up Card: " & Decks(handCards(0, 1), 0) & Decks(handCards(0, 1), 1)
    			f.WriteLine "Player's Cards:      " & Decks(handCards(1, 0), 0) & Decks(handCards(1, 0), 1) & ", " & Decks(handCards(1, 1), 0) & Decks(handCards(1, 1), 1)
    			f.WriteLine "New Count: " & runningCount
    		End If
    		
    		If runningCount >= InsuranceCount And Decks(handCards(0, 1), 0) = 1 Then
    			wagers = wagers + (handData(1, 0) / 2)
    			If handData(0, 1) <> 21 Then
    				bankRoll = bankRoll - (handData(1, 0) / 2)
    				If Auditing Then f.WriteLine "Took Insurance, Dealer did not have 21, Bankroll = " & bankRoll
    			Else
    				bankRoll = bankRoll + (handData(1, 0) / 2) * 3
    				If Auditing Then f.WriteLine "Took Insurance, Dealer had 21, Bankroll = " & bankRoll
    			End If
    		End If
    		
    		If handData(0, 1) = 21 Then
    			If handData(1, 1) <> 21 Then
    				bankRoll = bankRoll - handData(1, 0)
    				If Auditing Then f.WriteLine "Hand Outcome: Dealer Blackjack, Bankroll = " & bankRoll
    			End If
    		ElseIf handData(1, 1) = 21 Then
    			bankRoll = bankRoll + handData(1, 0) * BJPayoutAmount
    			If Auditing Then f.WriteLine "Hand Outcome: Player Blackjack"
    			lastHandWon = True
    		ElseIf handData(1, 2) = 1 And Left(SoftStrategy(handData(1, 1), Decks(handCards(0, 1), 0)), 1) = "R" Then
    			bankRoll = bankRoll - (handData(1, 0) / 2)
    			If Auditing Then f.WriteLine "Hand Outcome: Surrender, Bankroll = " & bankRoll
    		ElseIf handData(1, 2) <> 1 And Left(HardStrategy(handData(1, 1), Decks(handCards(0, 1), 0)), 1) = "R" Then
    			bankRoll = bankRoll - (handData(1, 0) / 2)
    			If Auditing Then f.WriteLine "Hand Outcome: Surrender, Bankroll = " & bankRoll
    		ElseIf Decks(handCards(1, 0), 0) = Decks(handCards(1, 1), 0) And Left(SplitStrategy(Decks(handCards(1, 0), 0), Decks(handCards(0, 1), 0)), 1) = "R" Then
    			bankRoll = bankRoll - (handData(1, 0) / 2)
    			If Auditing Then f.WriteLine "Hand Outcome: Surrender, Bankroll = " & bankRoll
    		Else
    			' Handle splits
    			i = 1
    			Do Until i > numHands
    				If Decks(handCards(i, 0), 0) = Decks(handCards(i, 1), 0) And Right(SplitStrategy(Decks(handCards(1, 0), 0), Decks(handCards(0, 1), 0)), 1) = "P" And numHands < NumMaxSplits Then
    					numHands = numHands + 1
    					handData(numHands, 0) = handData(i, 0)
    					handData(numHands, 2) = handData(i, 2)
    					handData(numHands, 3) = 2
    					handCards(numHands, 0) = handCards(i, 1)
    					
    					If Decks(handCards(i, 0), 0) = 1 Then
    						handData(numHands, 1) = 11
    						handData(i, 1) = 11
    					Else
    						handData(numHands, 1) = Decks(handCards(i, 0), 0)
    						handData(i, 1) = Decks(handCards(i, 0), 0)
    					End If
    					
    					' Deal a card to each hand
    					handCards(i, 1) = deckPosition
    					If Decks(deckPosition, 0) = 1 And handData(i, 1) + 11 <= 21 Then 
    						handData(i, 1) = handData(i, 1) + 11
    						handData(i, 2) = 1
    					Else
    						handData(i, 1) = handData(i, 1) + Decks(deckPosition, 0)
    					End If
    					runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    					deckPosition = deckPosition + 1
    					
    					handCards(numHands, 1) = deckPosition
    					If Decks(deckPosition, 0) = 1 And handData(numHands, 1) + 11 <= 21 Then 
    						handData(numHands, 1) = handData(numHands, 1) + 11
    						handData(numHands, 2) = 1
    					Else
    						handData(numHands, 1) = handData(numHands, 1) + Decks(deckPosition, 0)
    					End If
    					runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    					deckPosition = deckPosition + 1
    					
    					If CanResplitAces = False And Decks(handCards(1, 0), 0) = 1 Then
    						i = 999
    					End If
    				Else
    					i = i + 1
    				End If
    			Loop
    			
    			' Player decisions
    			For i = 1 To numHands
    				strDecision = ""
    				s = ""
    				
    				If numHands > 1 And CanHitSplitAces = False And Decks(handCards(1, 0), 0) = 1 Then
    					strDecision = "S"
    				End If
    				
    				Do Until strDecision = "S"
    					If handData(i, 2) = 1 Then
    						strDecision = SoftStrategy(handData(i, 1), Decks(handCards(0, 1), 0))
    					Else
    						strDecision = HardStrategy(handData(i, 1), Decks(handCards(0, 1), 0))
    					End If
    					
    					' Modify decision based on count indexes
    					If UseIndexes Then
    						For j = 0 To UBound(Indexes)
    							If runningCount >= Indexes(j, 0) Then
    								If handData(i, 1) = Indexes(j, 1) And Decks(handCards(0, 1), 0) = Indexes(j, 2) And handData(i, 2) <> 1 Then
    									strDecision = Indexes(j, 3)
    								End If
    							End If
    						Next
    					End If
    					
    					s = s & strDecision & ", "
    					
    					Select Case strDecision
    						Case "S"
    						Case "RS"
    							strDecision = "S"
    						Case "H"
    							' deal a card
    							handCards(i, handData(i, 3)) = deckPosition
    							If Decks(deckPosition, 0) = 1 And (handData(i, 1) + 11) <= 21 Then 
    								handData(i, 1) = handData(i, 1) + 11
    								handData(i, 2) = 1
    							ElseIf handData(i, 2) = 1 And (handData(i, 1) + Decks(deckPosition, 0)) > 21 Then
    								handData(i, 2) = 0
    								handData(i, 1) = handData(i, 1) - 10 + Decks(deckPosition, 0)
    							Else
    								handData(i, 1) = handData(i, 1) + Decks(deckPosition, 0)
    							End If
    							handData(i, 3) = handData(i, 3) + 1
    							runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    							deckPosition = deckPosition + 1
    							
    							' check for bust
    							If handData(i, 1) > 21 Then
    								strDecision = "S"
    							End If
    						Case "RH"
    							' deal a card
    							handCards(i, handData(i, 3)) = deckPosition
    							If Decks(deckPosition, 0) = 1 And (handData(i, 1) + 11) <= 21 Then 
    								handData(i, 1) = handData(i, 1) + 11
    								handData(i, 2) = 1
    							ElseIf handData(i, 2) = 1 And (handData(i, 1) + Decks(deckPosition, 0)) > 21 Then
    								handData(i, 2) = 0
    								handData(i, 1) = handData(i, 1) - 10 + Decks(deckPosition, 0)
    							Else
    								handData(i, 1) = handData(i, 1) + Decks(deckPosition, 0)
    							End If
    							handData(i, 3) = handData(i, 3) + 1
    							runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    							deckPosition = deckPosition + 1
    							
    							' check for bust
    							If handData(i, 1) > 21 Then
    								strDecision = "S"
    							End If
    						Case "DH"
    							If handData(i, 3) = 2 And (numHands = 1 Or AllowDoubleAfterSplit = True) Then
    								handData(i, 0) = handData(i, 0) * 2
    								strDecision = "S"
    								s = s & "Doubled, "
    							End If
    							
    							' deal a card
    							handCards(i, handData(i, 3)) = deckPosition
    							If Decks(deckPosition, 0) = 1 And (handData(i, 1) + 11) <= 21 Then 
    								handData(i, 1) = handData(i, 1) + 11
    								handData(i, 2) = 1
    							ElseIf handData(i, 2) = 1 And (handData(i, 1) + Decks(deckPosition, 0)) > 21 Then
    								handData(i, 2) = 0
    								handData(i, 1) = handData(i, 1) - 10 + Decks(deckPosition, 0)
    							Else
    								handData(i, 1) = handData(i, 1) + Decks(deckPosition, 0)
    							End If
    							handData(i, 3) = handData(i, 3) + 1
    							runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    							deckPosition = deckPosition + 1
    							
    							'check for bust
    							If handData(i, 1) > 21 Then
    								strDecision = "S"
    							End If
    						Case "DS"
    							strDecision = "S"
    							
    							If handData(i, 3) = 2 And (numHands = 1 Or AllowDoubleAfterSplit = True) Then
    								handData(i, 0) = handData(i, 0) * 2
    								s = s & "Doubled, "
    							
    								' deal a card
    								handCards(i, handData(i, 3)) = deckPosition
    								If Decks(deckPosition, 0) = 1 And (handData(i, 1) + 11) <= 21 Then 
    									handData(i, 1) = handData(i, 1) + 11
    									handData(i, 2) = 1
    								ElseIf handData(i, 2) = 1 And (handData(i, 1) + Decks(deckPosition, 0)) > 21 Then
    									handData(i, 2) = 0
    									handData(i, 1) = handData(i, 1) - 10 + Decks(deckPosition, 0)
    								Else
    									handData(i, 1) = handData(i, 1) + Decks(deckPosition, 0)
    								End If
    								handData(i, 3) = handData(i, 3) + 1
    								runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    								deckPosition = deckPosition + 1
    							End If
    						Case Else
    							WScript.Echo handData(i, 1) & vbcrlf & Decks(handCards(0, 1), 0) & vbcrlf & handData(i, 2) & vbcrlf & i & _
    							SoftStrategy(handData(i, 1), Decks(handCards(0, 1), 0)) & vbcrlf & HardStrategy(handData(i, 1), Decks(handCards(0, 1), 0)) & vbcrlf & _
    							Decks(handCards(i, 0), 0) & "," & Decks(handCards(i, 1), 0) & vbcrlf & handData(i, 3)
    					End Select
    				Loop
    				
    				If Auditing Then f.WriteLine "Hand " & i & " Decisions: " & s
    			Next
    			
    			' dealer decisions
    			strDecision = ""
    			Do Until strDecision = "S"
    				If handData(0, 1) < 17 Or (handData(0, 1) = 17 And handData(0, 2) = 1 And DealerHitSoft17 = True) Then
    					' deal a card
    					handCards(0, handData(0, 3)) = deckPosition
    					If Decks(deckPosition, 0) = 1 And (handData(0, 1) + 11) <= 21 Then 
    						handData(0, 1) = handData(0, 1) + 11
    						handData(0, 2) = 1
    					ElseIf handData(0, 2) = 1 And (handData(0, 1) + Decks(deckPosition, 0)) > 21 Then
    						handData(0, 2) = 0
    						handData(0, 1) = handData(0, 1) - 10 + Decks(deckPosition, 0)
    					Else
    						handData(0, 1) = handData(0, 1) + Decks(deckPosition, 0)
    					End If
    					handData(0, 3) = handData(0, 3) + 1
    					runningCount = runningCount + CountValues(Decks(deckPosition, 0))
    					deckPosition = deckPosition + 1
    				Else
    					strDecision = "S"
    				End If
    			Loop
    			
    			' hand outcomes
    			For i = 1 To NumHands
    				If Auditing Then 
    					f.WriteLine "Hand " & i & " Bet = "  & handData(i, 0) & ", Value = " & handData(i, 1) & ", Soft Hand = " & handData(i, 2) & ", Number of Cards = " & handData(i, 3)
    					s = ""
    					For x = 0 To handData(i, 3) - 1
    						s = s & Decks(handCards(i, x), 0) & Decks(handCards(i, x), 1) & ", "
    					Next
    					f.WriteLine "Hand " & i & " Final Cards: " & s
    				End If
    			
    				wagers = wagers + handData(i, 0)
    				If handData(i, 1) > 21 Then
    					' player bust
    					bankRoll = bankRoll - handData(i, 0)
    					If Auditing Then f.WriteLine "Hand Outcome: Player Bust"
    				ElseIf handData(0, 1) > 21 Then
    					' dealer bust
    					bankRoll = bankRoll + handData(i, 0)
    					lastHandWon = True
    					If Auditing Then f.WriteLine "Hand Outcome: Dealer Bust"
    				ElseIf handData(i, 1) < handData(0, 1) Then
    					' dealer wins
    					bankRoll = bankRoll - handData(i, 0)
    					If Auditing Then f.WriteLine "Hand Outcome: Dealer Wins"
    				ElseIf handData(i, 1) > handData(0, 1) Then
    					' player wins
    					bankRoll = bankRoll + handData(i, 0)
    					lastHandWon = True
    					If Auditing Then f.WriteLine "Hand Outcome: Player Wins"
    				ElseIf handData(i, 1) = handData(0, 1) Then
    					If Auditing Then f.WriteLine "Hand Outcome: Push"
    				Else
    					WScript.Echo "Hand Outcome Error"
    				End If
    			Next
    		End If
    		
    		runningCount = runningCount + CountValues(Decks(handCards(0, 0), 0))
    		numHandsPlayed = numHandsPlayed + numHands
    		If bankRoll < lowBankRoll Then lowBankRoll = bankRoll
    		If bankRoll > highBankRoll Then highBankRoll = bankRoll
    			
    		If Auditing Then 
    			f.WriteLine "Dealer's Value = " & handData(0, 1) & ", Soft Hand = " & handData(0, 2) & ", Number of Cards = " & handData(0, 3)
    			s = ""
    			For i = 0 To handData(0, 3) - 1
    				s = s & Decks(handCards(0, i), 0) & Decks(handCards(0, i), 1) & ", "
    			Next
    			f.WriteLine "Dealer's Final Cards: " & s
    				
    			f.WriteLine "Ending Count = " & runningCount & ", Bankroll = " & bankRoll
    			f.WriteLine ""
    		End If
    	Loop
    Next
    
    endTime = Now()
    WScript.Echo _
    	"Started: " & startTime & vbcrlf & _
    	"Lowest Bank Roll: " & lowBankRoll & vbcrlf & _
    	"Highest Bank Roll: " & highBankRoll & vbcrlf & _
    	"Ending Bank Roll: " & bankRoll & vbcrlf & _
    	"Total Hands Played: " & numHandsPlayed & vbcrlf & _
    	"Total Wagers: " & wagers & vbcrlf & _
    	"Average Wager: " & Round(wagers / numHandsPlayed, 2) & vbcrlf & _
    	"Advantage: " & Round(bankRoll / wagers * 100, 4) & vbcrlf & _
    	"Ended: " & endTime & vbcrlf & _
    	"Elapsed Time in Minutes: " & DateDiff("n", startTime, endTime)
    
    
    
    
    Sub InitializeDecks(numOfDecks)
    	Dim i, j
    	
    	Redim Decks(52 * numOfDecks - 1, 1)
    	
    	For i = 1 To numOfDecks
    		For j = 0 To 51
    			Decks((i - 1) * 52 + j, 0) = StandardDeck(j, 0)
    			Decks((i - 1) * 52 + j, 1) = StandardDeck(j, 1)
    		Next
    	Next
    End Sub
    
    Sub ShuffleDecks()
    	Dim i, j, value, suit, x
    	
    	Randomize
    	
    	' Fisher Yates Shuffling Algorithm
    	x = UBound(Decks) - 1
    	For i = 0 To x
    		j = Int(Rnd() * (x - i + 2)) + i
    		value = Decks(j, 0)
    		suit = Decks(j, 1)
    		Decks(j, 0) = Decks(i, 0)
    		Decks(j, 1) = Decks(i, 1)
    		Decks(i, 0) = value
    		Decks(i, 1) = suit
    	Next
    End Sub
    
    Sub Initialize()
    	startTime = Now()
    	bankRoll = 0
    	wagers = 0
    	lowBankRoll = 0
    	highBankRoll = 0
    	numHandsPlayed = 0
    	
    	CountValues(2) = 1
    	CountValues(3) = 1
    	CountValues(4) = 1
    	CountValues(5) = 1
    	CountValues(6) = 1
    	CountValues(7) = 1
    	CountValues(8) = 0
    	CountValues(9) = 0
    	CountValues(10) = -1
    	CountValues(1) = -1
    	
    	BettingRamp(0, 0) = 1
    	BettingRamp(0, 1) = 2
    	BettingRamp(1, 0) = 2
    	BettingRamp(1, 1) = 3
    	BettingRamp(2, 0) = 3
    	BettingRamp(2, 1) = 5
    	BettingRamp(3, 0) = 4
    	BettingRamp(3, 1) = 6
    	
    	Indexes(0, 0) = 0
    	Indexes(0, 1) = 16
    	Indexes(0, 2) = 10
    	Indexes(0, 3) = "S"
    	
    	Indexes(1, 0) = 4
    	Indexes(1, 1) = 15
    	Indexes(1, 2) = 10
    	Indexes(1, 3) = "S"
    	
    	Indexes(2, 0) = 4
    	Indexes(2, 1) = 12
    	Indexes(2, 2) = 2
    	Indexes(2, 3) = "S"
    	
    	Indexes(3, 0) = 4
    	Indexes(3, 1) = 12
    	Indexes(3, 2) = 3
    	Indexes(3, 3) = "S"
    	
    	Indexes(4, 0) = 4
    	Indexes(4, 1) = 9
    	Indexes(4, 2) = 7
    	Indexes(4, 3) = "DH"
    	
    	Indexes(5, 0) = 4
    	Indexes(5, 1) = 8
    	Indexes(5, 2) = 6
    	Indexes(5, 3) = "DH"
    	
    	Indexes(6, 0) = 4
    	Indexes(6, 1) = 8
    	Indexes(6, 2) = 5
    	Indexes(6, 3) = "DH"
    	
    	Indexes(7, 0) = 4
    	Indexes(7, 1) = 10
    	Indexes(7, 2) = 10
    	Indexes(7, 3) = "DH"
    	
    	Indexes(8, 0) = 4
    	Indexes(8, 1) = 10
    	Indexes(8, 2) = 1
    	Indexes(8, 3) = "DH"
    	
    	StandardDeck(0, 0) = 1
    	StandardDeck(0, 1) = "Ace of Diamonds"
    	StandardDeck(1, 0) = 2
    	StandardDeck(1, 1) = " of Diamonds"
    	StandardDeck(2, 0) = 3
    	StandardDeck(2, 1) = " of Diamonds"
    	StandardDeck(3, 0) = 4
    	StandardDeck(3, 1) = " of Diamonds"
    	StandardDeck(4, 0) = 5
    	StandardDeck(4, 1) = " of Diamonds"
    	StandardDeck(5, 0) = 6
    	StandardDeck(5, 1) = " of Diamonds"
    	StandardDeck(6, 0) = 7
    	StandardDeck(6, 1) = " of Diamonds"
    	StandardDeck(7, 0) = 8
    	StandardDeck(7, 1) = " of Diamonds"
    	StandardDeck(8, 0) = 9
    	StandardDeck(8, 1) = " of Diamonds"
    	StandardDeck(9, 0) = 10
    	StandardDeck(9, 1) = "Ten of Diamonds"
    	StandardDeck(10, 0) = 10
    	StandardDeck(10, 1) = "Jack of Diamonds"
    	StandardDeck(11, 0) = 10
    	StandardDeck(11, 1) = "Queen of Diamonds"
    	StandardDeck(12, 0) = 10
    	StandardDeck(12, 1) = "King of Diamonds"
    	StandardDeck(13, 0) = 1
    	StandardDeck(13, 1) = "Ace of Clubs"
    	StandardDeck(14, 0) = 2
    	StandardDeck(14, 1) = " of Clubs"
    	StandardDeck(15, 0) = 3
    	StandardDeck(15, 1) = " of Clubs"
    	StandardDeck(16, 0) = 4
    	StandardDeck(16, 1) = " of Clubs"
    	StandardDeck(17, 0) = 5
    	StandardDeck(17, 1) = " of Clubs"
    	StandardDeck(18, 0) = 6
    	StandardDeck(18, 1) = " of Clubs"
    	StandardDeck(19, 0) = 7
    	StandardDeck(19, 1) = " of Clubs"
    	StandardDeck(20, 0) = 8
    	StandardDeck(20, 1) = " of Clubs"
    	StandardDeck(21, 0) = 9
    	StandardDeck(21, 1) = " of Clubs"
    	StandardDeck(22, 0) = 10
    	StandardDeck(22, 1) = "Ten of Clubs"
    	StandardDeck(23, 0) = 10
    	StandardDeck(23, 1) = "Jack of Clubs"
    	StandardDeck(24, 0) = 10
    	StandardDeck(24, 1) = "Queen of Clubs"
    	StandardDeck(25, 0) = 10
    	StandardDeck(25, 1) = "King of Clubs"
    	StandardDeck(26, 0) = 1
    	StandardDeck(26, 1) = "Ace of Hearts"
    	StandardDeck(27, 0) = 2
    	StandardDeck(27, 1) = " of Hearts"
    	StandardDeck(28, 0) = 3
    	StandardDeck(28, 1) = " of Hearts"
    	StandardDeck(29, 0) = 4
    	StandardDeck(29, 1) = " of Hearts"
    	StandardDeck(30, 0) = 5
    	StandardDeck(30, 1) = " of Hearts"
    	StandardDeck(31, 0) = 6
    	StandardDeck(31, 1) = " of Hearts"
    	StandardDeck(32, 0) = 7
    	StandardDeck(32, 1) = " of Hearts"
    	StandardDeck(33, 0) = 8
    	StandardDeck(33, 1) = " of Hearts"
    	StandardDeck(34, 0) = 9
    	StandardDeck(34, 1) = " of Hearts"
    	StandardDeck(35, 0) = 10
    	StandardDeck(35, 1) = "Ten of Hearts"
    	StandardDeck(36, 0) = 10
    	StandardDeck(36, 1) = "Jack of Hearts"
    	StandardDeck(37, 0) = 10
    	StandardDeck(37, 1) = "Queen of Hearts"
    	StandardDeck(38, 0) = 10
    	StandardDeck(38, 1) = "King of Hearts"
    	StandardDeck(39, 0) = 1
    	StandardDeck(39, 1) = "Ace of Spades"
    	StandardDeck(40, 0) = 2
    	StandardDeck(40, 1) = " of Spades"
    	StandardDeck(41, 0) = 3
    	StandardDeck(41, 1) = " of Spades"
    	StandardDeck(42, 0) = 4
    	StandardDeck(42, 1) = " of Spades"
    	StandardDeck(43, 0) = 5
    	StandardDeck(43, 1) = " of Spades"
    	StandardDeck(44, 0) = 6
    	StandardDeck(44, 1) = " of Spades"
    	StandardDeck(45, 0) = 7
    	StandardDeck(45, 1) = " of Spades"
    	StandardDeck(46, 0) = 8
    	StandardDeck(46, 1) = " of Spades"
    	StandardDeck(47, 0) = 9
    	StandardDeck(47, 1) = " of Spades"
    	StandardDeck(48, 0) = 10
    	StandardDeck(48, 1) = "Ten of Spades"
    	StandardDeck(49, 0) = 10
    	StandardDeck(49, 1) = "Jack of Spades"
    	StandardDeck(50, 0) = 10
    	StandardDeck(50, 1) = "Queen of Spades"
    	StandardDeck(51, 0) = 10
    	StandardDeck(51, 1) = "King of Spades"
    	
    	HardStrategy(2, 2) = "H"
    	HardStrategy(2, 3) = "H"
    	HardStrategy(2, 4) = "H"
    	HardStrategy(2, 5) = "H"
    	HardStrategy(2, 6) = "H"
    	HardStrategy(2, 7) = "H"
    	HardStrategy(2, 8) = "H"
    	HardStrategy(2, 9) = "H"
    	HardStrategy(2, 10) = "H"
    	HardStrategy(2, 1) = "H"
    	
    	HardStrategy(4, 2) = "H"
    	HardStrategy(4, 3) = "H"
    	HardStrategy(4, 4) = "H"
    	HardStrategy(4, 5) = "H"
    	HardStrategy(4, 6) = "H"
    	HardStrategy(4, 7) = "H"
    	HardStrategy(4, 8) = "H"
    	HardStrategy(4, 9) = "H"
    	HardStrategy(4, 10) = "H"
    	HardStrategy(4, 1) = "H"
    	
    	HardStrategy(5, 2) = "H"
    	HardStrategy(5, 3) = "H"
    	HardStrategy(5, 4) = "H"
    	HardStrategy(5, 5) = "H"
    	HardStrategy(5, 6) = "H"
    	HardStrategy(5, 7) = "H"
    	HardStrategy(5, 8) = "H"
    	HardStrategy(5, 9) = "H"
    	HardStrategy(5, 10) = "H"
    	HardStrategy(5, 1) = "H"
    	
    	HardStrategy(6, 2) = "H"
    	HardStrategy(6, 3) = "H"
    	HardStrategy(6, 4) = "H"
    	HardStrategy(6, 5) = "H"
    	HardStrategy(6, 6) = "H"
    	HardStrategy(6, 7) = "H"
    	HardStrategy(6, 8) = "H"
    	HardStrategy(6, 9) = "H"
    	HardStrategy(6, 10) = "H"
    	HardStrategy(6, 1) = "H"
    	
    	HardStrategy(7, 2) = "H"
    	HardStrategy(7, 3) = "H"
    	HardStrategy(7, 4) = "H"
    	HardStrategy(7, 5) = "H"
    	HardStrategy(7, 6) = "H"
    	HardStrategy(7, 7) = "H"
    	HardStrategy(7, 8) = "H"
    	HardStrategy(7, 9) = "H"
    	HardStrategy(7, 10) = "H"
    	HardStrategy(7, 1) = "H"
    	
    	HardStrategy(8, 2) = "H"
    	HardStrategy(8, 3) = "H"
    	HardStrategy(8, 4) = "H"
    	HardStrategy(8, 5) = "H"
    	HardStrategy(8, 6) = "H"
    	HardStrategy(8, 7) = "H"
    	HardStrategy(8, 8) = "H"
    	HardStrategy(8, 9) = "H"
    	HardStrategy(8, 10) = "H"
    	HardStrategy(8, 1) = "H"
    	
    	HardStrategy(9, 2) = "DH"
    	HardStrategy(9, 3) = "DH"
    	HardStrategy(9, 4) = "DH"
    	HardStrategy(9, 5) = "DH"
    	HardStrategy(9, 6) = "DH"
    	HardStrategy(9, 7) = "H"
    	HardStrategy(9, 8) = "H"
    	HardStrategy(9, 9) = "H"
    	HardStrategy(9, 10) = "H"
    	HardStrategy(9, 1) = "H"
    	
    	HardStrategy(10, 2) = "DH"
    	HardStrategy(10, 3) = "DH"
    	HardStrategy(10, 4) = "DH"
    	HardStrategy(10, 5) = "DH"
    	HardStrategy(10, 6) = "DH"
    	HardStrategy(10, 7) = "DH"
    	HardStrategy(10, 8) = "DH"
    	HardStrategy(10, 9) = "DH"
    	HardStrategy(10, 10) = "H"
    	HardStrategy(10, 1) = "H"
    	
    	HardStrategy(11, 2) = "DH"
    	HardStrategy(11, 3) = "DH"
    	HardStrategy(11, 4) = "DH"
    	HardStrategy(11, 5) = "DH"
    	HardStrategy(11, 6) = "DH"
    	HardStrategy(11, 7) = "DH"
    	HardStrategy(11, 8) = "DH"
    	HardStrategy(11, 9) = "DH"
    	HardStrategy(11, 10) = "DH"
    	HardStrategy(11, 1) = "DH"
    	
    	HardStrategy(12, 2) = "H"
    	HardStrategy(12, 3) = "H"
    	HardStrategy(12, 4) = "S"
    	HardStrategy(12, 5) = "S"
    	HardStrategy(12, 6) = "S"
    	HardStrategy(12, 7) = "H"
    	HardStrategy(12, 8) = "H"
    	HardStrategy(12, 9) = "H"
    	HardStrategy(12, 10) = "H"
    	HardStrategy(12, 1) = "H"
    	
    	HardStrategy(13, 2) = "S"
    	HardStrategy(13, 3) = "S"
    	HardStrategy(13, 4) = "S"
    	HardStrategy(13, 5) = "S"
    	HardStrategy(13, 6) = "S"
    	HardStrategy(13, 7) = "H"
    	HardStrategy(13, 8) = "H"
    	HardStrategy(13, 9) = "H"
    	HardStrategy(13, 10) = "H"
    	HardStrategy(13, 1) = "H"
    	
    	HardStrategy(14, 2) = "S"
    	HardStrategy(14, 3) = "S"
    	HardStrategy(14, 4) = "S"
    	HardStrategy(14, 5) = "S"
    	HardStrategy(14, 6) = "S"
    	HardStrategy(14, 7) = "H"
    	HardStrategy(14, 8) = "H"
    	HardStrategy(14, 9) = "H"
    	HardStrategy(14, 10) = "H"
    	HardStrategy(14, 1) = "H"
    	
    	HardStrategy(15, 2) = "S"
    	HardStrategy(15, 3) = "S"
    	HardStrategy(15, 4) = "S"
    	HardStrategy(15, 5) = "S"
    	HardStrategy(15, 6) = "S"
    	HardStrategy(15, 7) = "H"
    	HardStrategy(15, 8) = "H"
    	HardStrategy(15, 9) = "H"
    	HardStrategy(15, 10) = "RH"
    	HardStrategy(15, 1) = "RH"
    	
    	HardStrategy(16, 2) = "S"
    	HardStrategy(16, 3) = "S"
    	HardStrategy(16, 4) = "S"
    	HardStrategy(16, 5) = "S"
    	HardStrategy(16, 6) = "S"
    	HardStrategy(16, 7) = "H"
    	HardStrategy(16, 8) = "H"
    	HardStrategy(16, 9) = "H"
    	HardStrategy(16, 10) = "RH"
    	HardStrategy(16, 1) = "RH"
    	
    	HardStrategy(17, 2) = "S"
    	HardStrategy(17, 3) = "S"
    	HardStrategy(17, 4) = "S"
    	HardStrategy(17, 5) = "S"
    	HardStrategy(17, 6) = "S"
    	HardStrategy(17, 7) = "S"
    	HardStrategy(17, 8) = "S"
    	HardStrategy(17, 9) = "S"
    	HardStrategy(17, 10) = "S"
    	HardStrategy(17, 1) = "RS"
    	
    	HardStrategy(18, 2) = "S"
    	HardStrategy(18, 3) = "S"
    	HardStrategy(18, 4) = "S"
    	HardStrategy(18, 5) = "S"
    	HardStrategy(18, 6) = "S"
    	HardStrategy(18, 7) = "S"
    	HardStrategy(18, 8) = "S"
    	HardStrategy(18, 9) = "S"
    	HardStrategy(18, 10) = "S"
    	HardStrategy(18, 1) = "S"
    	
    	HardStrategy(19, 2) = "S"
    	HardStrategy(19, 3) = "S"
    	HardStrategy(19, 4) = "S"
    	HardStrategy(19, 5) = "S"
    	HardStrategy(19, 6) = "S"
    	HardStrategy(19, 7) = "S"
    	HardStrategy(19, 8) = "S"
    	HardStrategy(19, 9) = "S"
    	HardStrategy(19, 10) = "S"
    	HardStrategy(19, 1) = "S"
    	
    	HardStrategy(20, 2) = "S"
    	HardStrategy(20, 3) = "S"
    	HardStrategy(20, 4) = "S"
    	HardStrategy(20, 5) = "S"
    	HardStrategy(20, 6) = "S"
    	HardStrategy(20, 7) = "S"
    	HardStrategy(20, 8) = "S"
    	HardStrategy(20, 9) = "S"
    	HardStrategy(20, 10) = "S"
    	HardStrategy(20, 1) = "S"
    	
    	HardStrategy(21, 2) = "S"
    	HardStrategy(21, 3) = "S"
    	HardStrategy(21, 4) = "S"
    	HardStrategy(21, 5) = "S"
    	HardStrategy(21, 6) = "S"
    	HardStrategy(21, 7) = "S"
    	HardStrategy(21, 8) = "S"
    	HardStrategy(21, 9) = "S"
    	HardStrategy(21, 10) = "S"
    	HardStrategy(21, 1) = "S"
    	
    	SoftStrategy(12, 2) = "H"
    	SoftStrategy(12, 3) = "H"
    	SoftStrategy(12, 4) = "H"
    	SoftStrategy(12, 5) = "H"
    	SoftStrategy(12, 6) = "H"
    	SoftStrategy(12, 7) = "H"
    	SoftStrategy(12, 8) = "H"
    	SoftStrategy(12, 9) = "H"
    	SoftStrategy(12, 10) = "H"
    	SoftStrategy(12, 1) = "H"
    	
    	SoftStrategy(13, 2) = "H"
    	SoftStrategy(13, 3) = "H"
    	SoftStrategy(13, 4) = "H"
    	SoftStrategy(13, 5) = "DH"
    	SoftStrategy(13, 6) = "DH"
    	SoftStrategy(13, 7) = "H"
    	SoftStrategy(13, 8) = "H"
    	SoftStrategy(13, 9) = "H"
    	SoftStrategy(13, 10) = "H"
    	SoftStrategy(13, 1) = "H"
    	
    	SoftStrategy(14, 2) = "H"
    	SoftStrategy(14, 3) = "H"
    	SoftStrategy(14, 4) = "DH"
    	SoftStrategy(14, 5) = "DH"
    	SoftStrategy(14, 6) = "DH"
    	SoftStrategy(14, 7) = "H"
    	SoftStrategy(14, 8) = "H"
    	SoftStrategy(14, 9) = "H"
    	SoftStrategy(14, 10) = "H"
    	SoftStrategy(14, 1) = "H"
    	
    	SoftStrategy(15, 2) = "H"
    	SoftStrategy(15, 3) = "H"
    	SoftStrategy(15, 4) = "DH"
    	SoftStrategy(15, 5) = "DH"
    	SoftStrategy(15, 6) = "DH"
    	SoftStrategy(15, 7) = "H"
    	SoftStrategy(15, 8) = "H"
    	SoftStrategy(15, 9) = "H"
    	SoftStrategy(15, 10) = "H"
    	SoftStrategy(15, 1) = "H"
    	
    	SoftStrategy(16, 2) = "H"
    	SoftStrategy(16, 3) = "H"
    	SoftStrategy(16, 4) = "DH"
    	SoftStrategy(16, 5) = "DH"
    	SoftStrategy(16, 6) = "DH"
    	SoftStrategy(16, 7) = "H"
    	SoftStrategy(16, 8) = "H"
    	SoftStrategy(16, 9) = "H"
    	SoftStrategy(16, 10) = "H"
    	SoftStrategy(16, 1) = "H"
    	
    	SoftStrategy(17, 2) = "H"
    	SoftStrategy(17, 3) = "DH"
    	SoftStrategy(17, 4) = "DH"
    	SoftStrategy(17, 5) = "DH"
    	SoftStrategy(17, 6) = "DH"
    	SoftStrategy(17, 7) = "H"
    	SoftStrategy(17, 8) = "H"
    	SoftStrategy(17, 9) = "H"
    	SoftStrategy(17, 10) = "H"
    	SoftStrategy(17, 1) = "H"
    	
    	SoftStrategy(18, 2) = "DS"
    	SoftStrategy(18, 3) = "DS"
    	SoftStrategy(18, 4) = "DS"
    	SoftStrategy(18, 5) = "DS"
    	SoftStrategy(18, 6) = "DS"
    	SoftStrategy(18, 7) = "S"
    	SoftStrategy(18, 8) = "S"
    	SoftStrategy(18, 9) = "H"
    	SoftStrategy(18, 10) = "H"
    	SoftStrategy(18, 1) = "H"
    	
    	SoftStrategy(19, 2) = "S"
    	SoftStrategy(19, 3) = "S"
    	SoftStrategy(19, 4) = "S"
    	SoftStrategy(19, 5) = "S"
    	SoftStrategy(19, 6) = "DS"
    	SoftStrategy(19, 7) = "S"
    	SoftStrategy(19, 8) = "S"
    	SoftStrategy(19, 9) = "S"
    	SoftStrategy(19, 10) = "S"
    	SoftStrategy(19, 1) = "S"
    	
    	SoftStrategy(20, 2) = "S"
    	SoftStrategy(20, 3) = "S"
    	SoftStrategy(20, 4) = "S"
    	SoftStrategy(20, 5) = "S"
    	SoftStrategy(20, 6) = "S"
    	SoftStrategy(20, 7) = "S"
    	SoftStrategy(20, 8) = "S"
    	SoftStrategy(20, 9) = "S"
    	SoftStrategy(20, 10) = "S"
    	SoftStrategy(20, 1) = "S"
    	
    	SoftStrategy(21, 2) = "S"
    	SoftStrategy(21, 3) = "S"
    	SoftStrategy(21, 4) = "S"
    	SoftStrategy(21, 5) = "S"
    	SoftStrategy(21, 6) = "S"
    	SoftStrategy(21, 7) = "S"
    	SoftStrategy(21, 8) = "S"
    	SoftStrategy(21, 9) = "S"
    	SoftStrategy(21, 10) = "S"
    	SoftStrategy(21, 1) = "S"
    	
    	SplitStrategy(2, 2) = "H"
    	SplitStrategy(2, 3) = "H"
    	SplitStrategy(2, 4) = "P"
    	SplitStrategy(2, 5) = "P"
    	SplitStrategy(2, 6) = "P"
    	SplitStrategy(2, 7) = "P"
    	SplitStrategy(2, 8) = "H"
    	SplitStrategy(2, 9) = "H"
    	SplitStrategy(2, 10) = "H"
    	SplitStrategy(2, 1) = "H"
    	
    	SplitStrategy(3, 2) = "H"
    	SplitStrategy(3, 3) = "H"
    	SplitStrategy(3, 4) = "P"
    	SplitStrategy(3, 5) = "P"
    	SplitStrategy(3, 6) = "P"
    	SplitStrategy(3, 7) = "P"
    	SplitStrategy(3, 8) = "H"
    	SplitStrategy(3, 9) = "H"
    	SplitStrategy(3, 10) = "H"
    	SplitStrategy(3, 1) = "H"
    	
    	SplitStrategy(4, 2) = "H"
    	SplitStrategy(4, 3) = "H"
    	SplitStrategy(4, 4) = "H"
    	SplitStrategy(4, 5) = "H"
    	SplitStrategy(4, 6) = "H"
    	SplitStrategy(4, 7) = "H"
    	SplitStrategy(4, 8) = "H"
    	SplitStrategy(4, 9) = "H"
    	SplitStrategy(4, 10) = "H"
    	SplitStrategy(4, 1) = "H"
    	
    	SplitStrategy(5, 2) = "DH"
    	SplitStrategy(5, 3) = "DH"
    	SplitStrategy(5, 4) = "DH"
    	SplitStrategy(5, 5) = "DH"
    	SplitStrategy(5, 6) = "DH"
    	SplitStrategy(5, 7) = "DH"
    	SplitStrategy(5, 8) = "DH"
    	SplitStrategy(5, 9) = "DH"
    	SplitStrategy(5, 10) = "H"
    	SplitStrategy(5, 1) = "H"
    	
    	SplitStrategy(6, 2) = "P"
    	SplitStrategy(6, 3) = "P"
    	SplitStrategy(6, 4) = "P"
    	SplitStrategy(6, 5) = "P"
    	SplitStrategy(6, 6) = "P"
    	SplitStrategy(6, 7) = "H"
    	SplitStrategy(6, 8) = "H"
    	SplitStrategy(6, 9) = "H"
    	SplitStrategy(6, 10) = "H"
    	SplitStrategy(6, 1) = "H"
    	
    	SplitStrategy(7, 2) = "P"
    	SplitStrategy(7, 3) = "P"
    	SplitStrategy(7, 4) = "P"
    	SplitStrategy(7, 5) = "P"
    	SplitStrategy(7, 6) = "P"
    	SplitStrategy(7, 7) = "P"
    	SplitStrategy(7, 8) = "H"
    	SplitStrategy(7, 9) = "H"
    	SplitStrategy(7, 10) = "H"
    	SplitStrategy(7, 1) = "H"
    	
    	SplitStrategy(8, 2) = "P"
    	SplitStrategy(8, 3) = "P"
    	SplitStrategy(8, 4) = "P"
    	SplitStrategy(8, 5) = "P"
    	SplitStrategy(8, 6) = "P"
    	SplitStrategy(8, 7) = "P"
    	SplitStrategy(8, 8) = "P"
    	SplitStrategy(8, 9) = "P"
    	SplitStrategy(8, 10) = "P"
    	SplitStrategy(8, 1) = "RP"
    	
    	SplitStrategy(9, 2) = "P"
    	SplitStrategy(9, 3) = "P"
    	SplitStrategy(9, 4) = "P"
    	SplitStrategy(9, 5) = "P"
    	SplitStrategy(9, 6) = "P"
    	SplitStrategy(9, 7) = "S"
    	SplitStrategy(9, 8) = "P"
    	SplitStrategy(9, 9) = "P"
    	SplitStrategy(9, 10) = "S"
    	SplitStrategy(9, 1) = "S"
    	
    	SplitStrategy(10, 2) = "S"
    	SplitStrategy(10, 3) = "S"
    	SplitStrategy(10, 4) = "S"
    	SplitStrategy(10, 5) = "S"
    	SplitStrategy(10, 6) = "S"
    	SplitStrategy(10, 7) = "S"
    	SplitStrategy(10, 8) = "S"
    	SplitStrategy(10, 9) = "S"
    	SplitStrategy(10, 10) = "S"
    	SplitStrategy(10, 1) = "S"
    	
    	SplitStrategy(1, 2) = "P"
    	SplitStrategy(1, 3) = "P"
    	SplitStrategy(1, 4) = "P"
    	SplitStrategy(1, 5) = "P"
    	SplitStrategy(1, 6) = "P"
    	SplitStrategy(1, 7) = "P"
    	SplitStrategy(1, 8) = "P"
    	SplitStrategy(1, 9) = "P"
    	SplitStrategy(1, 10) = "P"
    	SplitStrategy(1, 1) = "P"
    End Sub
  • twinnyfo
    Recognized Expert Moderator Specialist
    • Nov 2011
    • 3662

    #2
    Rabbit,

    Thanks for the code. I'll run through it just to see all the workings. I'm no gambler, but the science behind cards interests me. I appreciate the time you took to put this together!

    Comment

    • Rabbit
      Recognized Expert MVP
      • Jan 2007
      • 12517

      #3
      No problem twinnyfo, it was more to satisfy my own curiosity. I'm no card counting expert so I've been using a simplified version of an already simple counting algorithm. I was just curious if using such a simple count actually gained me any benefit so I figured I would simulate millions of games to find out.

      Comment

      Working...