This package simulates a blackjack game using multiple functions and modules. All code must be ran in a proc iml.
Each function in the package is an instrumental part in running the game, and the play_hand() function is the final module that incorporates all functions to actually simualte the game. The game is based on one player and the dealer and uses the "optimal strategy" in order to maximize the player's winnings. When the play_hand() function is run, SAS will print the dealer's initial face up card, the player's initial hand, the player's next "action", and finally the results of the game which include the player and dealer's hand values along with the player's amount in winnings based on the bet made. The game is set up so that it uses 2 decks of cards.
The functions include: shuffle_deck which shuffles n number of decks. shoe which draws m number of cards from the shuffled decks. new_hand which creates a new hand of cards by drawing m cards from the deck and placing a bet. hand_value calculates the value of a player's hand of cards. dealer_hand creates a new hand of cards for the dealer by drawing m cards from the deck. dealer_hand_value calculates the value of a dealer's hand of cards. winnings calculates the amount in winnings of the player based on the player and dealer's cards. print_hand prints out the contents of a hand of blackjack. hit draws 1 card from the shoe and adds it to the hand. stand returns the unaltered hand of cards. dd doubles the amount of the bet, draws an additional card, and returns the new hand. splitPair can only be used if the 2 cards are the same value, and it splits the cards into 2 separate hands. strategy_optimal is the strategy we use to simulate this blackjack game. It returns the optimal move the player should make. play_hand is the ending function that incorportates all of the above functions and actually plays the game of blackjack. The deck of cards must be loaded into the script before beginning the game. Also, the dealer and player's hand of cards msut be created using the appropriate functions.
... View more