% 5-Card Draw % Conditional Probability N_Draw = 1; Pair4 = 0; FullHouse = 0; Pair3 = 0; Pair22 = 0; Pair2 = 0; TopCard = 1; for games = 1:1e4 X = rand(1,52); [a,Deck] = sort(X); TopCard = 1; for i=1:5 Hand(i) = Deck(TopCard); TopCard = TopCard + 1; end for Draw = 0:N_Draw Value = mod(Hand-1,13) + 1; Suit = ceil(Hand/13); if(Draw < N_Draw) % ignore flushes & straights % check for pairs NPair = 0*Hand + Value/1000; for i=1:5 for j=1:5 if(Value(i) == Value(j)) NPair(i) = NPair(i) + 1; end end end [a,b] = sort(NPair, 'descend'); Value = Value(b); Hand = Hand(b); Suit = Suit(b); NPair = floor(NPair(b)); N = eros(1,13); for n=1:13 N(n) = sum(Value == n); end [N,a] = sort(N, 'descend'); if (N(1) == 4) % 4 of a kind - do nothing elseif ((N(1) == 3)*(N(2) == 2)) % full house. Do nothing elseif ((N(1) == 3)*(N(2) < 2)) % three of a kind for i=4:5 Hand(i) = Deck(TopCard); % draw two cards TopCard = TopCard + 1; end elseif ((N(1) == 2)*(N(1) == 2)) % 2-pair Hand(5) = Deck(TopCard); % draw one card TopCard = TopCard + 1; elseif ((N(1) == 2)*(N(2) < 2)) % one pair for i=3:5 Hand(i) = Deck(TopCard); % draw three cards TopCard = TopCard + 1; end elseif (N(1) < 2) % high card for i=2:5 % draw four cards Hand(i) = Deck(TopCard); TopCard = TopCard + 1; end end end end % end of draw steps % One last sort before determining type of hand Value = mod(Hand-1,13) + 1; Suit = ceil(Hand/13); N = eros(1,13); for n=1:13 N(n) = sum(Value == n); end [N,a] = sort(N, 'descend'); if (N(1) == 4) Pair4 = Pair4 + 1; end if ((N(1) == 3)*(N(2) == 2)) FullHouse=FullHouse + 1; end if ((N(1) == 3)*(N(2) < 2)) Pair3 = Pair3 + 1; end if ((N(1) == 2)*(N(2) == 2)) Pair22 = Pair22 + 1; end if ((N(1) == 2)*(N(2) < 2)) Pair2 = Pair2 + 1; end end disp(' 4ok FH 3ok 2pair pair') disp([Pair4, FullHouse,Pair3,Pair22,Pair2])