% ECE 341 Lecture #3 % 5 card draw poker % note: igores straigts and flushes tic Pair4 = 0; Pair32 = 0; Pair3 = 0; Pair22 = 0; Pair2 = 0; for i0 = 1:1e4 X = rand(1,52); [a,Deck] = sort(X); Hand = Deck(1:5); Value = mod(Hand-1,13) + 1; % step 1: sort by frequency N = Value / 100; for i=1:5 for j=1:5 if(Value(i) == Value(j)) N(i) = N(i) + 1; end end end [N,b] = sort(N, 'descend'); N = floor(N); Hand = Hand(b); Value = mod(Hand,13) + 1; % step 2: determine the number of aces - kings N = zeros(13,1); for i=1:13 N(i) = sum(Value == i); end % step 3: sort most frequency to least frequency N = sort(N, 'descend'); % step 4: determine type of hand and number of cards to draw % three of a kind - draw two if( (N(1) == 3)*(N(2) == 1) ) Hand(4:5) = Deck(6:7); % two pair, draw one elseif((N(1) == 2)*(N(2) == 2)) Hand(5) = Deck(6); % pair: draw three elseif((N(1) == 2)*(N(2) < 2)) Hand(3:5) = Deck(6:8); % high card: draw four else Hand(2:5) = Deck(6:9); end Value = mod(Hand,13) + 1; % step 5: determine the frequency of ace - king after drawing cards N = zeros(1,13); for n=1:13 N(n) = sum(Value == n); end % step 6: determine type of hand N = sort(N, 'descend'); if( N(1)==4 ) Pair4 = Pair4 + 1; end if( (N(1)==3)*(N(2)==2) ) Pair32 = Pair32 + 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)==1) ) Pair2 = Pair2 + 1; end end disp(' ') disp('Five Card Draw Poker Odds') disp(' 4ok full-house 3ok 2pair pair'); disp([Pair4, Pair32, Pair3, Pair22, Pair2]) toc