%blackjack simulation %bet one dollar on each hand; start with $100 my_money = 100; iwin=0;%counter for number of wins ilose = 0;%counter for number of losses ties = 0;%counter for number of ties hand = 0;%counter for number of hands played. my_stay_value = 14; %don't take another card if hand is worth 14 or more. %deal cards from 2 decks for i = 1:100 %note 11= jack, 12 = queen, 13 = king, and 14 = ace. d1 = [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 11 11 11 11 12 12 12 12 13 13 13 13 14 14 14 14]; deck = [d1 d1]; numcards = size(deck,2); bigindexset = 1:numcards; permuted_indices = bigindexset(randperm(numcards)); shuffled_cards = deck(permuted_indices); %One game (of two decks) card_counter = 1; while card_counter < numcards - 10%dont let deck run out! %new hand hand = hand +1; my_count = 0; dealer_count = 0; %make initial deal of two cards to Player and Dealer. my_count = my_card_value(card_counter, shuffled_cards, my_count); card_counter = card_counter+1;%advance deck index dealer_count = dealer_card_value(card_counter, shuffled_cards, dealer_count); card_counter = card_counter+1; my_count = my_card_value(card_counter, shuffled_cards, my_count); card_counter = card_counter+1; dealer_count = dealer_card_value(card_counter, shuffled_cards, dealer_count); card_counter=card_counter+1; while my_count < my_stay_value & card_counter < numcards my_count = my_card_value(card_counter, shuffled_cards, my_count); card_counter = card_counter +1; end while dealer_count < 17 & card_counter < numcards & my_count < 22 dealer_count = dealer_card_value(card_counter, shuffled_cards, dealer_count); card_counter = card_counter +1; end %who wins? if my_count > 21% I am bust my_money = my_money - 1; ilose = ilose +1; elseif dealer_count > 21%dealer is bust my_money = my_money + 1; iwin = iwin +1; elseif my_count == dealer_count %push--my winnings don't change ties = ties +1; elseif my_count > dealer_count my_money = my_money +1; iwin = iwin +1; else my_money = my_money -1; ilose = ilose + 1; end%if %construct an array that computes a running fraction of losses perclose(hand) = ilose/(iwin+ilose+ties); end%while end%for iwin ilose ties plot(perclose) my_money